終於理解單列模式了,單列模式和多執行緒

2021-08-17 09:07:39 字數 896 閱讀 6585

1、單例類確保自己只有乙個例項(構造方法私有化)

2、單例類必須自己建立自己的例項。

3、單例類必須為其他物件提供唯一的例項。

package singleton;

//懶漢式  單例例項在第一次被使用時構建,延遲初始化。

public class singleton }}

return sing;

}public void getname()

}

優點: 避免了餓漢式的那種在沒有用到的情況下建立事例,資源利用率高,不執行getinstance()就不會被例項,可以執行該類的其他靜態方法。

缺點: 懶漢式在單個執行緒中沒有問題,但多個執行緒同事訪問的時候就可能同事建立多個例項,而且這多個例項不是同乙個物件,雖然後面建立的例項會覆蓋先建立的例項,但是還是會存在拿到不同物件的情況。解決這個問題的辦法就是加鎖synchonized,第一次載入時不夠快,多執行緒使用不必要的同步開銷大。

餓漢式   在自己內部定義自己的乙個例項,只供內部呼叫

public class singleton1

//這裡提供了乙個供外部訪問本class的靜態方法,可以直接訪問

public static singleton1 getinstance()

//測試用方法

public void put()

}優點 1.執行緒安全

2.在類載入的同時已經建立好乙個靜態物件,呼叫時反應速度快

缺點     資源效率不高,可能getinstance()永遠不會執行到,但執行該類的其他靜態方法或者載入了該類(class.forname),那麼這個例項仍然初始化

public class test

python單列模式 Python單列模式

實現單例模式的幾種方式 1.使用模組 2.使用裝飾器 3.使用類 4.基於 new 方法實現 推薦使用,方便 5.基於metaclass方式實現 單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出...

設計模式 單列模式

何為設計模式呢?簡單的說就是能重複利用的解決方案,當碰到a專案也出現這種情況,b專案也出現這種情況 那麼是否能把這懂實現功能抽象出來,形成一種解決方案.單列模式 顧名思義就是乙個例項 即乙個物件只能初始化一次 作用 減少開闢記憶體空間,節約記憶體開銷 class program 因為a物件在記憶體堆...

設計模式 單列模式

原文 單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候...