標籤:線程同步 方式 執行個體 分享圖片 private 靜態 single 資源 安全執行緒
一、 單例模式:一種常用的軟體設計模式。通過單例模式可以保證系統中,應用該模式的類一個類只有一個執行個體。即一個類只有一個對象執行個體
二、 應用:線程池、緩衝、日誌對象、對話方塊、印表機、顯卡的驅動程式對象常被設計成單例
三、 單例模式特點:
1、單例類只能有一個執行個體。
2、單例類必須自己建立自己的唯一執行個體。
3、單例類必須給所有其他對象提供這一執行個體。
四、單利模式的建立
public class Singletn { private String name; private String id; //建立唯一執行個體 private static Singletn singletn = new Singletn(); //對外提供執行個體 public static Singletn getInstant() { return singletn; } //構造器私人化 private Singletn() { } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id; } public String getName() { return name; } public String getId() { return id; }}餓漢式單例模式
public class Singletn { private String name; private String id; //建立唯一執行個體 private static Singletn singletn; //對外提供執行個體 public static Singletn getInstant() { if (singletn == null){//雙重檢查 synchronized (Singletn.class){//多線程時,安全執行緒問題,加鎖實現線程同步 singletn= new Singletn(); } } return singletn; } //構造器私人化 private Singletn() { } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id; } public String getName() { return name; } public String getId() { return id; }}懶漢式單例模式
餓漢式與懶漢式區別:
1.餓漢式即靜態初始化的方式,它是類一載入就執行個體化的對象,所以要提前佔用系統資源
2.懶漢式類似於消極式載入,在使用的時候執行個體化,多線程中會有安全執行緒問題,需要雙重檢查
推薦使用餓漢式。
Java-單例模式