3
由於意外的屬性值,我得到錯誤,我試圖縮小原因。該屬性通過以下示例類從文件加載:是我的PropertyLoader單例線程安全嗎?
public final class PropertyLoader {
private enum Instances{
ELVIS;
private final PropertyLoader loader;
Instances() {
this.loader = new PropertyLoader();
}
}
private boolean isPropertyEnabled;
private PropertyLoader() {
loadProperties();
}
public static PropertyLoader getInstance() {
Instances.ELVIS.loader;
}
private void loadProperties() {
this.isPropertyEnabled = loadPropertyFromFile(FILE, "enabled");
//... more properties
}
public boolean isPropertyEnabled() {
// eventually returns unexpected value
return this.isPropertyEnabled;
}
}
該實現是線程安全嗎?如果不是,我如何在不改變接口的情況下改進實現?有沒有一種有效的策略來測試這個類的併發性問題?