这就是我始终创建线程安全单例的方式,以便在多线程应用程序中使用它。
public class Logger {
private Logger() {}
private static Logger instance = new Logger();
public static Logger getInstance() {
return instance;
}
public void log(String s) {
// Log here
}
}
今天我正在学习获得 Java 认证,并在书中找到了另一个解决方案:
public class Logger {
private Logger() {}
private static Logger instance;
private static class LoggerHolder {
public static Logger logger = new Logger();
}
public static Logger getInstance() {
return LoggerHolder.logger;
}
public void log(String s) {
// Log here
}
}
他们没有提到另一个。
什么更好?这两种解决方案有什么区别?