2017-12-13 3 views
-6

"스레드의 실행 메소드가 마지막 명령을 실행하면 스레드가 객체로 죽습니다." 은 스레드 실습 중 하나에서 거짓이라고합니다. 왜 이것이 맞지 않습니까?스레드에 관한 개념 (스레드가 죽을 때)

+0

왜냐하면'Object' 자체가 다음 GarbageCollector주기까지 파괴되지 않기 때문일 것입니다. –

+0

실행을 마자 마자'Thread' 객체는 GCed 될 수 없습니다. 모든 참조는 먼저 제거해야합니다. –

답변

1

이상한 질문입니다. "대상으로서의 다이스"는 전통적인 용어가 아닙니다.

Thread 객체의 인스턴스는 다른 Java 객체와 같이 동작합니다. 더 이상 접근 할 수 없게되면 가비지 수집됩니다. 가축 수집에 대한 자세한 내용은 https://stackoverflow.com/a/5690468/3765428을 참조하십시오. 다른 객체가 보유 또는 스레드 객체에 점으로

Object thread = new Thread()

만큼 살아 : 변수가 가리키는되고있는 객체 AKA -

+0

작은 니트를 선택하지만'Thread' 오브젝트와 다른 오브젝트 사이에 작은 차이가 있습니다. 언어의 작동 방식에는 차이가 없지만 사실상 차이가 있습니다. 프로그램이 새로운'Thread' 객체를 생성하고, 스레드를 시작하고, 참조를 버린다. 'Thread' 객체는 새 스레드의 스택에 숨겨진 참조를 통해 계속 도달 할 수 있습니다. 스레드가 실행되는 한 적어도 계속해서 도달 할 수 있습니다. –

0

은 '사망'정의 일반적으로 이 필요합니다. 예 : Object[] threads = [thread, ...] //Psudo code 스레드 개체가 가리키고/보유하고있는/등 스레드 개체와 그것이 처분되지 않는 한, 그것은 여전히 ​​'살아있다'.

그리고 객체에 아무도 포인트, 그것은 여전히에 (모든 객체에 존재)을 Dispose() 메소드를 호출하기 위해 GarbageCollector (GC)주기를 기다릴가없는 경우에도 그것을 '죽이는'