話不多說,直接上**:
(1)
//只適合單執行緒環境,懶漢模式classsingletonpublic staticsingleton getinstance()returninstance;
}}
評價:由於只生成乙個例項,為防止別人建立該類例項,構造方法為私有屬性,只有在例項物件為空時才去建立(為避免重複建立)。
//餓漢模式classsingletonpublic staticsingleton getinstance()
}
評價:開始的時候就建立乙個final型別的靜態例項物件,以後不會再改變。
//雙重判斷
classsingletonpublic staticsingleton getinstance()評價:經過兩次判定,第一次檢測到例項為空時,增加同步,同步後再次檢測到例項為空時,才建立物件例項。有效防止了在多執行緒環境下建立多個例項的問題。}}returninstance;
}}
(4)
//volatile 關鍵字的使用
private static volatilesingleton singleton;
volatile 關鍵字的使用可以解決一定程度上的多執行緒訪問時出現的同步問題,保證一定程度的執行緒安全。如果整形的變數由volatile修飾,在其值發生改變後,能夠快速被其他執行緒可見,告知其他執行緒自己發生改變。
(5)結合volatile的單例模式
classsingletonpublic staticsingleton getinstance()評價:在volatile 和synchronized 兩端執行緒安全的保護下,保證了多執行緒訪問情況下出現多個例項的問題。volatile 保證在例項物件建立後快速通知其他執行緒}}returninstance;
}}
該物件的例項已經存在,不需要重複建立了。主要突出了可見性。
Java單例模式的各種寫法和最優寫法推薦
話不多說,直接上 1.懶漢模式 只適合單執行緒環境,在需要的時候才去建立物件例項 時間換空間 優點 在不要物件例項的時候,節省了記憶體空間。缺點 在使用的時候會先判斷是否為空,為空的話,才去建立物件。所以獲取物件例項相對較慢。class singleton public static singlet...
單例模式的各種寫法
1.餓漢式單例模式 classname hungerysingleton description 餓漢式單例模式 author ymj date 2020 07 10 21 55 version v1.0 public class hungerysingleton public static hun...
玩轉單例模式的各種寫法和破解
餓漢式單例 public class hungry private final static hungry hungry newhungry public static hungry getinstance 懶漢式 public class lazyman private static lazyma...