Nir*_*lya 0 java thread-safety
我有问题理解下面这段代码: -
public class SoCalledSigleton{
private final static boolean allDataLoaded = SoCalledSigleton();
private SoCalledSigleton(){
loadDataFromDB();
loadDataFromFile();
loadDataAgainFromDB();
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码线程安全吗?如果不是那么为什么?
这将在Java中创建错误.
private final static boolean allDataLoaded = SoCalledSigleton();
Run Code Online (Sandbox Code Playgroud)
new实例化变量.但如果你的代码是这样的话
public class SoCalledSigleton{
private final static SoCalledSigleton allDataLoaded = new SoCalledSigleton();
private SoCalledSigleton(){
loadDataFromDB();
loadDataFromFile();
loadDataAgainFromDB();
}
}
Run Code Online (Sandbox Code Playgroud)
它是线程安全的,因为静态初始化和静态属性是线程安全的.它们只被初始化一次并存在于整个系统的整个生命周期中.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |