'2014/01'에 해당되는 글 1건

  1. 2014.01.06 Java의 Daemon Thread란


우리가 흔히 Daemon 이라 하면 Background 에서 도는 프로세스를 생각할 것이다. 그러나 Java에서는 조심해야 한다.


Java 에도 Daemon Thread라는 것이 있다.

(Java에서 Thread를 처음 만들면 User thread 이고, 이것을 setDaemon(true)를 하면 Daemon Thread로 바뀐다.)


그런데 이 Daemon Thread는 Background에서 돌아가는 (Parent JVM이 종료되어도 돌아가는) Thread로 생각하면 안된다. 오히려 정 반대이다.


Daemon은 뒤에서 숨어서 조력한다는 의미로 Daemon인 것이고, 이 Daemon Thread가 조력하는 대상은 Parent JVM이다. 따라서 Parent JVM이 종료되면 Daemon Thread도 같이 종료된다. 이 때, finally 등의 구문이 실행되지 않으니 주의가 필요하다.


Daemon Thread가 아닌 User Thread의 경우, Parent JVM이 종료되어도 자신은 종료되지 않고 작업을 계속 한다.


예) Tomcat 에서 생성한 Thread가 Tomcat 종료시에 같이 종료되게 하려면 Daemon Thread로 만들어야 한다.



Posted by 임장관입니다

댓글을 달아 주세요