티스토리 뷰

System 관리에 있어 오래 걸리는 thread에 대한 고민해 본적이 있을 것인데, 이러한 thread는 try catch문을 활용해서 interrupt를 시켜주거나 timeout을 걸어 처리한다. 급할 때는 제니퍼와 같은 APM에서 중지를 하거나 WAS자체에서 suspended를 시켜주는 데 이렇게 해도 처리되지 않을 때가 있다.

이유는 thread가 non-Runnable 상태에 있지 않고 Runnable 상태에 있기 때문에 인터럽트를 걸어도 바로 안죽는다. 그럼 Runnable 상태에 있는 오래 걸리는 thread는 어떻게 죽여야 할까? thread-stop이라는 걸 알아버렸다. thread-stop을 하면 thread가 Runnable에 있어도 처리가능하다. 

하지만 양날의 검이라고 했던가? thread-stop은 어떤 영향이 있을 지 아무도 모른다. 포스트하고 있지만 왠만하면 자연스럽게 처리되는 걸(Non-Runnable상태로 전환) 추천한다.  그럼에도 불구하고 처리해야 된다면 다음 포스트(오래 걸리는 JAVA Thread처리 방안(2/2)를 참고하시라... 분명 경고드린다. 구동함에 있어 어떤 법적책임도 없다.  

728x90
반응형
댓글