IntelliJ可以为单例类自动生成模板,如下所示:
public class A {
private static A ourInstance = new A();
public static A getInstance() {
return ourInstance;
}
private A() {
}
}
这是单例线程安全的实现吗?我已经读过通过枚举实现线程安全的单例。我想知道上面的实现是否也是线程安全的。由于'ourInstance'已被定义为静态并初始化为类变量,因此应该只有该对象的一个副本。
答案 0 :(得分:1)
是的,这个实现是线程安全的。在此类或其任何实例可用于其余Java代码之前,保证静态字段已初始化并可见。
答案 1 :(得分:1)
您需要将final
添加到static
变量ourInstance
以防止以后进行任何修改,然后您将拥有完美的线程安全singleton
。