單例模式-DCL
阿新 • • 發佈:2021-06-10
鐵子們有段時間沒有更新了,最近忙著準備面試,準備過程中發現自己還需要積累的實在是太多太多,每每學到新東西的感覺真是美妙而又動力十足啊,繼續伸直腰桿、努力前進
單例模式-DCL
雙重檢查判斷,使用volatile關鍵字禁止指令重排,在多執行緒情況下建立安全的單例物件,直接上程式碼
public class Instance { /** * volatile 禁止指令重排,按照程式碼執行順序先賦值後建立物件 */ private volatile static Instance instance; private String instName; private Instance() { instName = "DCL"; } public static Instance getInstance() { if (instance == null) { synchronized (Instance.class) { if (instance == null) { instance = new Instance(); } } } return instance; } }
單例模式-內部類
使用內部類構造單例物件,JVM保證單例
public class Instance {
private static class InstanceObj {
private static final Instance INSTANCE = new Instance();
}
public static Instance getInstance() {
return InstanceObj.INSTANCE;
}
}