是IntelliJ的java单例线程安全的

时间:2016-05-24 18:24:39

标签: java

IntelliJ可以为单例类自动生成模板,如下所示:

public class A {
    private static A ourInstance = new A();

    public static A getInstance() {
        return ourInstance;
    }

    private A() {
    }
}

这是单例线程安全的实现吗?我已经读过通过枚举实现线程安全的单例。我想知道上面的实现是否也是线程安全的。由于'ourInstance'已被定义为静态并初始化为类变量,因此应该只有该对象的一个​​副本。

2 个答案:

答案 0 :(得分:1)

是的,这个实现是线程安全的。在此类或其任何实例可用于其余Java代码之前,保证静态字段已初始化并可见。

答案 1 :(得分:1)

您需要将final添加到static变量ourInstance以防止以后进行任何修改,然后您将拥有完美的线程安全singleton