有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

IntelliJ的java单例线程安全吗

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

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

    public static A getInstance() {
        return ourInstance;
    }

    private A() {
    }
}

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


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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