這就是我總是創建一個線程安全的單例,以便在多線程應用程序中使用它。線程安全單例和內部類解決方案
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
}
}
他們並沒有提及另一個。
有什麼更好?這兩種解決方案有什麼區別?