1. 程式人生 > >通過double-check解決單例模式效率低的問題

通過double-check解決單例模式效率低的問題

    單例模式的應用場景是在一個專案系統執行的過程中某一個類只被建立一次,也就是說只允許一個該類的一個物件存在。其實如果想實現這種目的有很多方法,這裡我之所以提及是因為我之前在使用單例模式的時候沒有注意到我的單例模式程式碼還有提高效率的空間,接下來將把我之前實現單例模式的程式碼和通過改進的程式碼列舉出來,通過對比指出之前的不足。

1)之前使用的單例模式,示例程式碼如下:

2)經過改進後的單例模式,示例程式碼如下:

    通過上面的兩個單例模式進行對比,第一個單例模式的缺點是每次都要鎖定程式碼段,如果呼叫次數頻繁,那意味著每個執行緒都要鎖定MyLocker,就會造成效能下降。其實鎖定只要用到一次就可以,那一次就是在物件還沒有被建立的時候,如果這個時候發生執行緒併發,通過鎖可以有效的避免重複建立物件的問題。第二個單例模式就有效的提高了由於第一個單例模式導致的效率低下的問題,也就是說只有第一次初始化建立物件的時候在會鎖定MyLocker,之後都不會在鎖定。