변수 범위에 대한 질문이 있습니다. 예를 들어정적 메서드 및 스레드 안전의 로컬 변수
:
class A {
private static void test() {
// do something with local variables
}
}
는 이제 두 개의 스레드를 만들고, 각 스레드에 대한 A
의 인스턴스를 생성합니다.
나는 각 스레드에
test()
전화, 나는test()
는 스레드로부터 안전하다는 것을 보장 할 수 있습니다?test()
의 지역 품종은 어디에 저장되어 있습니까? 각 스레드의 스택? 힙 공간?
P. 이 경우에 정적은 완전히 무의미하다는 것을 압니다. 나는 레거시 코드에서 그것을 발견했다. 나는 내가 아는 것을 확실하게하고 싶어!
+1,하지만, 그것은 일반적으로, 그것의 예를 '소유권을 포기'해야 만든 스레드 :에서
. 자신의 참조를 널링하거나 다른 오브젝트를 작성하여이를 겹쳐 쓰므로 두 스레드가 같은 오브젝트에서 작동 할 수 없습니다. 이 작업이 완료되지 않은 경우 설명대로 오브젝트가 공유되며 액세스를 위해 잠금이 필요합니다. –
예, 그렇기 때문에 참조를 null로 처리하여 개체를 삭제하는 것이 좋습니다. – Erol
위대한 나는이 질문을하려고했다 !! – JohnMerlino