싱글 톤 클래스 {지연 초기화}가 나타났습니다. 코드는지연 초기화 희박 변수가있는 싱글 톤 클래스
// Singleton reference for this class
private static volatile FileProperties INSTANCE = null;
public static FileProperties getInstance() {
if (INSTANCE == null) {
synchronized (FileProperties.class) {
if (INSTANCE == null) {
INSTANCE = new FileProperties();
}
}
}
return INSTANCE;
}
내 질문에 우리가 동기화에 의해 우리가 이미 스레드 안전을 돌보는 때문에 휘발성 로 인스턴스를 만들어지고 이익이 무엇이며 다음과 같이합니다. 이 시나리오에서 휘발성의 이점이 있습니까?
http://jeremymanson.blogspot.co.uk/2008/05/double-checked-locking.html –
이 이중 검사 잠금은 INSTANCE 변수에 널이 아닌 값이 할당 될 수 있다는 점에서 잠재적 인 오류가 있습니다 , * 전에 * FileProperties의 생성자가 완전히 실행되었습니다. 물론 생성자가 비어 있으면 상관 없습니다. –
@JakobJenkov는 분명히 알만한 가치가 있습니다. ** IF ** 인스턴스는 휘발성이 아닙니다. – assylias