Java 双重检查锁定
我最近偶然发现了一篇文章,讨论了Java中的双重检查锁定模式及其陷阱,现在我想知道我多年来一直在使用的该模式的变体是否受到任何问题的影响。
我已经看过许多关于这个主题的帖子和文章,并了解了获取对部分构造对象的引用的潜在问题,据我所知,我不认为我的实现会受到这些问题的影响。以下模式是否存在任何问题?
而且,如果没有,为什么人们不使用它?我从未在我看到的关于这个问题的任何讨论中看到过推荐它。
public class Test {
private static Test instance;
private static boolean initialized = false;
public static Test getInstance() {
if (!initialized) {
synchronized (Test.class) {
if (!initialized) {
instance = new Test();
initialized = true;
}
}
}
return instance;
}
}