2011-05-05 3 views

답변

3

Java는 모든 스레드의 (생성) 상위 스레드를 기록하지 않으며 (가상의) 상위 - 하위 관계는 스레드가 작동하는 방식에 영향을주지 않습니다.

Java와 가장 가까운 점은 ThreadGroup의 개념입니다. 모든 스레드는 ThreadGroup의 구성원이고 ThreadGroups는 다른 ThreadGroups를 포함 할 수 있으며 ThreadGroups는 초기 ThreadGroup에 뿌리를 둔 탐색 가능한 트리를 형성합니다. 그러나 ThreadGroups는 ThreadGroup에 의한 스레드 일시 중지/다시 시작/종료가 위험하고 사용되지 않음을 감안할 때 실제로 많이 허용하지 않습니다.

가비지 수집기 스레드는 아마도 초기 ThreadGroup의 멤버 일 수 있습니다. 그러나 GC 스레드가 특별한 경우이고 ThreadGroup의 구성원이 아닐 수도 있습니다. 어쨌든 ThreadGroup 트리를 가로 지르는 프로그램을 작성하지 않는다면 아무 것도 영향을 미치지 않습니다.

데몬 스레드는 단순히 시작하기 전에 데몬 플래그가 설정된 스레드입니다. 이것은 ThreadGroup 메커니즘과는 독립적입니다.

1

아니요. 데몬 스레드는 exit()를 호출하거나 모든 비 데몬 스레드가 종료 될 때까지 계속 실행됩니다.

즉, 다른 스레드 내에서 부모 - 자식 관계 인 스레드를 작성했기 때문이 아닙니다. 그들에게는 독립적 인 삶이 있습니다.

0

각 Java 스레드가 사용중인 OS의 lwp에 매핑되는 경우 JVM이 기본적으로 생성하는 모든 스레드는 Java 프로세스 자체를 시작하는 상위 프로세스의 하위입니다. 따라서 가비지 콜렉션 스레드에 대한 Java 프로세스에는 부모가 없습니다. 그래서 가비지 콜렉션 쓰레드, 파이널 라이저, 참조 핸들러 쓰레드와 같은 쓰레드는 모두 메인 쓰레드와 함께 자바 프로세스의 부모 프로세스의 자식들입니다.

Solaris 컴퓨터에서 ps -elL의 출력을 보면이를 확인할 수 있습니다.

이 질문에 대한 답변입니다. 그렇지 않으면 되돌리십시오.

관련 문제