StackOverlow 의 아래 답변을 참고하자.
http://stackoverflow.com/questions/2213340/what-is-daemon-thread-in-java
정리하면, JVM은 main thread가 끝나더라도, 아직 수행중인 다른 thread - non daemon thread(user thread) - 가 있다면, 중지되지 않는다.
즉, process가 계속해서 돈다.
C/C++ 처럼, main thread가 exit될 때 process를 종료시키려면, 모든 child thread 속성을 daemon thread로 설정해야 한다.
Thread t = new Thread(...)
t.setDaemon(true);
남아 있는 모든 thread가 Daemon thread일 경우, JVM은 중지된다.
다만, 이런식으로 thread가 급작스레 종료하는 것은 상당히 불안정한 결과를 가져 올 수 있으므로 주의해야 한다.
다시 말하면, 단 하나라도 종료되지 않은 user thread (non-daemon thread) 가 존재할 경우, JVM은 종료되지 않고, 모든 다른 thread (Daemon thraed 포함)역시 계속해도 수행된다.
'Language > Java' 카테고리의 다른 글
Compile time에 결정되는 것들 - static final primitives! (0) | 2014.01.15 |
---|---|
[Java][Test Code] ThreadPoolExecutor... (0) | 2013.09.25 |
[Java] Visibility에서 추가했으면 하는 것.... (0) | 2011.04.21 |
[Java] Some notable stuffs of VM (0) | 2011.01.06 |
[Java] Simple sample codes to remind... (0) | 2010.12.07 |