为什么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
}
答案 0 :(得分:0)
我认为由于Java,内部类和内部的“静态”定义 对象(在这种情况下为记录器)由jvm使用类加载器加载一次。
我认为最好将logger对象定义为final。 第二个线程或其他线程无法再次实例化该对象!