Kyl*_*yle 1 java multithreading java-ee
我有一个网络应用程序,我懒洋洋地加载组件.这里有很多
static Bla bla;
...
if(bla == null)
bla = new Bla();
Run Code Online (Sandbox Code Playgroud)
遍布整个代码.我需要做些什么来确保这是线程安全的?我是否应该随时换行,我在synchronized块中执行其中一个初始化?这样做有什么问题吗?
对于静态字段上的延迟加载的最佳解决方案,如Effective Java [第2版,第71项,p.283]和实践中的Java并发 [p.348],是按需初始化成语的惯用语:
public class Something {
private Something() {
}
private static class LazyHolder {
private static final Something something = new Something();
}
public static Something getInstance() {
return LazyHolder.something;
}
}
Run Code Online (Sandbox Code Playgroud)