設計模式Singleton學習

2021-05-24 07:05:00 字數 471 閱讀 8576

確保乙個類只有乙個例項被建立,雖然看上去簡單,但是裡面卻有很多的陷阱。

單例模式的類圖:

經典的單例模式:

這個也可以稱為:懶漢模式,只有在首次建立的時候,才去例項化。但是這種方式在多執行緒下是有問題的,第乙個執行緒執行到singleton=new singleton();時,還沒有例項化,singleton==null,此時第二個執行緒執行if (singleton==null),也進入了if裡面,這樣就會例項化兩個執行緒。下面的例子就是模擬了兩個執行緒同時訪問:

執行結果:

singleton@ca0b6

singleton@10b30a7

所以要進行執行緒安全的處理:

這樣就能保證每次就只有乙個執行緒可以進入,例項化執行緒。執行結果:

singleton@10b30a7

singleton@10b30a7

還有一種方式是:飽漢模式:

這種不會出現執行緒安全問題。

設計模式Singleton學習

確保乙個類只有乙個例項被建立,雖然看上去簡單,但是裡面卻有很多的陷阱。單例模式的類圖 經典的單例模式 public class singleton private static singleton singleton null public static singleton getinstance ...

設計模式Singleton

設計模式singleton 引言 相信大多數拜讀過 gang of four erich gamma,richard helm,ralph johnson,john vlissides 的經典之作 design pattern 的同僚們,對這本書一定推崇有加。曾有人這麼宣告 只有在讀過 design...

設計模式 Singleton

關於singleton模式的理解與思考 1 singleton模式最常用的解決方案是什麼?2 singleton如何保證執行緒安全性?3 singleton物件的析構如何完成?singleton模式用來保證乙個程序中只有乙個某型別的實體,也就是說程序中的多執行緒可能共享該實體。共享該實體是指共享該實...