辛格爾頓溶液
回答
在問題中引用的代碼基本上是這樣的:
class Singleton {
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
這是線程安全的,因爲實例更是不可以偷懶初始化,而是被實例化一次上課的時候被加載。
類加載器強制它自己的同步來保證類初始化是線程安全的。
+1我更喜歡'枚舉Singleton',因爲它更簡單恕我直言。 – 2013-03-17 00:22:58
@PeterLawrey我認爲枚舉單例模式是濫用枚舉(雖然它工作)。我更喜歡靜態的內部類模式,它提供了懶惰單元加線程安全性,而不需要任何同步 - 這是神奇的。 – Bohemian 2013-03-17 00:45:59
您應該使'instance'最終確保對所有線程的最新可見性。 – 2013-03-17 01:15:17
- 1. 辛格爾頓ExtJs4
- 2. jQuery的辛格爾頓
- 3. 辛格爾頓Imlementation類
- 4. 什麼是辛格爾頓
- 5. 辛格爾頓 - 有道
- 6. Unity3D辛格爾頓用MonoBehavior
- 7. 辛格爾頓NServiceBus佐賀
- 8. PHP OOP辛格爾頓
- 9. 辛格爾頓實例
- 10. Ninject辛格爾頓廠
- 11. 辛格爾頓問題
- 12. 辛格爾頓與JBoss SEAM
- 13. 辛格爾頓對象和Java servlet
- 14. 傳遞對象與辛格爾頓
- 15. 辛格爾頓工廠在PHP
- 16. 辛格爾頓C++模板類
- 17. PHP類父實例(辛格爾頓)
- 18. 辛格爾頓在Java參數再次
- 19. 辛格爾頓的NSMutableDictionary和plist中
- 20. 辛格爾頓和單元測試
- 21. 使用數據管理辛格爾頓
- 22. 訪問播放辛格爾頓方法
- 23. 純靜態類VS辛格爾頓
- 24. 辛格爾頓對象處置
- 25. 春辛格爾頓線程安全
- 26. 辛格爾頓在科特林
- 27. 斯威夫特3 - 辛格爾頓
- 28. 辛格爾頓Implemenatatio鏈接錯誤
- 29. 辛格爾頓繼承鏈接錯誤
- 30. 的Java的InvocationHandler和辛格爾頓
'getInstance()'是該類的'static'-context中唯一可用的方法。對於它的執行,靜態初始化(因此創建對象)將被執行。因此,在調用靜態方法之前不會創建任何對象。 – 2013-03-17 00:15:27