原文鏈接:https://blog.csdn.net/Activity_Time/article/details/96496579
1. 懶漢式的Java實現
public class Singleton {
// 唯一實例
private volatile static Singleton instance = null;
// 私有構造
private Singleton() {
System.out.println("Singleton構造" + this);
}
// 獲取實例
synchronized public static Singleton getInstance() {
return instance == null ? (instance = new Singleton()) : instance;
}
}
2. 多線程環境下單例模式的線程安全性問題:
餓漢模式的單例模式:在多線程環境下,線程安全
懶漢模式的單例模式:在多線程環境下,線程不安全
顯然由於判空以及創建對象是非原子性的操作,在多線程情境下會發生臟讀等問題
需要對該過程進行同步,同時為確保將變量的更新操作通知到其他線程要使用volatile關鍵字
3. volatile關鍵字(線程可見性)
Java中Volatile關鍵字詳解:https://www.cnblogs.com/zhengbin/p/5654805.html#_label1
Java內存模型:https://www.cnblogs.com/zhengbin/p/6407137.html

