Java/Thread
Thread의 suspend()와 resume()
MKJo
2023. 7. 13. 21:18
IDE에서 Thread의 suspend() 메소드와 resume() 메소드를 사용할 시 사용이 권장되지 않는다고 나온다.
이유는 두 메소드 모두 스레드 교착상태(deadlock)을 유발할 수 있기 때문인데, suspend() 메소드에 의해 타겟 스레드가 중단되는 시점에 중요한 리소스 등을 사용하고 있는경우 타겟 스레드가 재개될때까지 어느 스레드도 그 자원에 액세스 할 수 없기 때문이다.
resume()은 단순히 suspend() 메소드에 의해 중단된 스레드를 재개하기 위해서만 사용한다.
따라서, suspend와 resume 메소드 대신 wait, notify, notifyAll 메소드를 사용하여 스레드를 제어하는것이 바람직하다.
이를 통해 스레드 안전성 문제를 피하고, 더 세밀한 제어가 가능하다.