Java String 클래스를 읽을 수 없으며 스레드로부터 안전하지만 String에 대한 참조 할당이 스레드로부터 안전한지 여부에 대해 여전히 혼란 스럽습니다.Java에서 문자열을 안전하게 설정/가져 오는 방법은 무엇입니까?
첫 번째 질문 : 스레드 B는 코드가 스레드 안전 따르고, Foo.getString()
호출하는 동안 스레드 A가 Foo.setString()
를 호출하면?
Class Foo {
String aString;
public String getString() {
return aString;
}
public void setString(s) {
aString = s;
}
}
두 번째 질문 : 위의 코드는 스레드 금고, ReentrantLock와를 사용하여, 어떻게이 Foo.getString()
메소드를 작성하지 않은 경우?
Class Foo {
String aString;
ReentrantLock aLock;
public String getString() {
aLock.lock();
return aString;
aLock.unlock(); // This line will be unreachable. How to fix??
}
public void setString(s) {
aLock.lock();
aString = s;
aLock.unlock();
}
}
tryLock (제한 시간) 기능을 사용해야하므로 ReentrantLock을 사용해야합니다.
내 질문에 모두 답하면 답변을 수락합니다. 감사. – Lee