여기 일부 코드이다 b.doSomething를 실행가비지 수집 여부
public class A {
private volatile B b;
public void methodC() {
b.doSomething();
}
public void setB(B newB) {
this.b = newB;
}
}
'1 스레드'()를 실행하여 methodC().
동시에 '스레드 2'는 새 B 개체를 'b'로 설정합니다.
내 질문은 :
는 이전에 그 위에 해봐요() 메소드가 여전히 실행되고 있지만 가비지 수집 'B'에 의해 객체 refereced 수 있을까요?
'thread 1'의 이전 참조 된 객체에 대한 직접 참조 또는 파생 참조가 없다고 생각합니다. GC 문서에서 '도달 가능'하다고 생각하면 직접적으로 또는 파생 된 참조가있는 스레드가 있어야 함을 의미합니다. –
나는 어떤 참조가있을 수 있습니까? –
멤버 함수를 호출하려면 스레드의 스택에있는 객체에 대한 참조가 있어야합니다. 이 함수를 어떻게 호출 할 수 있습니까? – Nick