2012-04-05 3 views
3

Java에서 매달린 쓰레드는 어떻게됩니까?Java에서 쓰레드 매달기

마치 응용 프로그램을 만들고 여러 스레드를 생성하는 것처럼 말입니다. 그리고 스레드 중 하나가 완료되지 않고 주 프로그램이 완료됩니다. 이 매달려있는 스레드는 어떻게 될 것입니까? 무한히 스레드 풀에 머무를 것인가 JVM은 임계 시간 후에 스레드를 죽일 것인가 ???

+0

관련에 : http://stackoverflow.com/questions/2213340/what-is-daemon-thread-in-java – Gray

답변

9

스레드가 "데몬"으로 표시되었는지 여부에 달려 있습니다. 데몬 스레드는 JVM이 종료 될 때 종료됩니다. 데몬이 아닌 스레드가있는 경우 JVM은 이 아니며이 종료됩니다. 스레드가 먼저 완료 될 때까지 기다립니다.

기본적으로 스레드는 상위 스레드의 데몬 상태를 사용합니다. 주 스레드는 데몬을 false으로 설정하여 분기 된 모든 스레드도 false이됩니다.

Thread thread = new Thread(...); 
thread.setDaemon(true); 
thread.start(); 
+0

당신은 스레드가이 시작 전에 true에 데몬 플래그를 설정할 수 있습니다 +1, 그리고 아마도 또 다른 이유는 기본 설정이 '앱이 종료되지 않도록 설정'하는 이유를 설명하거나 제안 할 수 있다는 것입니다. 언어/런타임 개발자가 정말로 개발자를 괴롭 히고 싶다면 기본 '거부 시작'기능도 추가 할 수있었습니다. ( –

+0

@ Martin 내가 스레드가 비 데몬이므로 개발자가 JVM을 사용하지 않을 것이라는 결정을 내렸다고 생각합니다. 만약 그들이 죽일 수 있다면, 당신은 그렇게 명시 적으로 말해야 할 것입니다. 나는 그들이 올바른 선택을 한 것 같아요. – Gray

+0

Yup - 이것은 다른 '동의하지 않는 것'입니다. 어쨌든 고마워요. –