静态最终(急切的)单例线程在Java中安全吗?

时间:2018-12-08 10:48:26

标签: java design-patterns singleton

如果我使用static final创建一个单例对象,那么它是线程安全的吗?这是示例代码。

public class StaticSingleton {
    private static final StaticSingleton instance = new StaticSingleton();

    private StaticSingleton() {
    }

    public static StaticSingleton GetInstance() {
        return instance;
    }
}

1 个答案:

答案 0 :(得分:0)

是的,正如您所说的那样,它也很安全。看看这个例子:

classFoo {
    private static class HelperHolder{
        public static final Helper helper= new Helper();
    }

    public static Helper getHelper() {
        return HelperHolder.helper;
    }
}

这并不急,所以只有在需要帮助对象时才会创建我们的帮助对象(内部类直到被引用才加载)-lazy:)