2009-06-21 4 views
2

2 개의 데몬 스레드에 대한 참조를 보유하고있는 객체가 있습니다. 초기화되지 않았는지 모르는 경우를 고려 중이므로 파이널 라이저가 필요한지 여부를 결정할 수 있습니다. detinitializing 함수는 스레드를 중지합니다. 그냥 끝내기 만하면됩니다. 궁금 해서요.살아있는 스레드에 대한 참조를 보유하고있는 객체의 가비지 컬렉션

  1. 위의 스레드가 살아있는 동안 객체가 가비지 수집 될 수 있습니까?

  2. 가비지 수집이 가능하면 스레드가 중단됩니까? 당신은 마무리에 스레드를 중단해서는 안

답변

1

때문에
하나해야 가비지 컬렉션에 의존하는 응용 프로그램의하지 메이크업 동작.

가비지 콜렉션은 매우에 결정적 :

  • 다른 JVM에,
  • 다른 JVM 스위치,
  • 다른 운영 체제,
  • 다른 하드웨어 아키텍처,
  • 다른 하드웨어 세부 사항 (CPU, 코어, 메모리) ...

모든 것이 가비지 수집에 영향을줍니다.

개념을 다시 생각해보고 더 많은 정보를 알려주십시오. 이유는 스레드가 을 중지해야하는시기입니다.

+0

정상적인 경우 사용자는 올바르게 disconnect() 할 것이고 스레드 (I/O를 처리하는)는 중지됩니다. 단절이 제대로 이루어지지 않은 경우를 고려하고있었습니다. – shikhar

+0

그럼 나와 함께 가봐야 겠어, keepalive checks? "응답 없음"시간이 초과되면 스레드가 종료됩니다. 이것은 GC와 비교할 때 매우 결정적이기 때문입니다. –

+0

당신은 정교하게 할 수 있습니까? "응답 없음"? btw, 코드는 다음과 같습니다. http://code.google.com/p/commons-net-ssh/source/browse/src/main/java/org/apache/commons/net/ssh/trans/Transport.java # 80 – shikhar

관련 문제