bill pugh singleton,为什么线程安全?

时间:2018-06-09 06:00:11

标签: java multithreading singleton

为什么Bill Pugh的Singleton设计模式线程安全?

public class Logger {
    private Logger() {
        // private constructor
    }

    // static inner class - inner classes are not loaded until they are
    // referenced.
    private static class LoggerHolder {
        private static Logger logger = new Logger();
    }

    // global access point
    public static Logger getInstance() {
        return LoggerHolder.logger;
    }

    //Other methods
}

1 个答案:

答案 0 :(得分:0)

我认为由于Java,内部类和内部的“静态”定义 对象(在这种情况下为记录器)由jvm使用类加载器加载一次。

我认为最好将logger对象定义为final。 第二个线程或其他线程无法再次实例化该对象!