"스레드의 실행 메소드가 마지막 명령을 실행하면 스레드가 객체로 죽습니다." 은 스레드 실습 중 하나에서 거짓이라고합니다. 왜 이것이 맞지 않습니까?스레드에 관한 개념 (스레드가 죽을 때)
답변
이상한 질문입니다. "대상으로서의 다이스"는 전통적인 용어가 아닙니다.
Thread 객체의 인스턴스는 다른 Java 객체와 같이 동작합니다. 더 이상 접근 할 수 없게되면 가비지 수집됩니다. 가축 수집에 대한 자세한 내용은 https://stackoverflow.com/a/5690468/3765428을 참조하십시오. 다른 객체가 보유 또는 스레드 객체에 점으로
Object thread = new Thread()
작은 니트를 선택하지만'Thread' 오브젝트와 다른 오브젝트 사이에 작은 차이가 있습니다. 언어의 작동 방식에는 차이가 없지만 사실상 차이가 있습니다. 프로그램이 새로운'Thread' 객체를 생성하고, 스레드를 시작하고, 참조를 버린다. 'Thread' 객체는 새 스레드의 스택에 숨겨진 참조를 통해 계속 도달 할 수 있습니다. 스레드가 실행되는 한 적어도 계속해서 도달 할 수 있습니다. –
은 '사망'정의 일반적으로 이 필요합니다. 예 : Object[] threads = [thread, ...] //Psudo code
스레드 개체가 가리키고/보유하고있는/등 스레드 개체와 그것이 처분되지 않는 한, 그것은 여전히 '살아있다'.
그리고 객체에 아무도 포인트, 그것은 여전히에 (모든 객체에 존재)을 Dispose()
메소드를 호출하기 위해 GarbageCollector (GC)주기를 기다릴가없는 경우에도 그것을 '죽이는'
왜냐하면'Object' 자체가 다음 GarbageCollector주기까지 파괴되지 않기 때문일 것입니다. –
실행을 마자 마자'Thread' 객체는 GCed 될 수 없습니다. 모든 참조는 먼저 제거해야합니다. –