java 單例模式的兩種常用寫法
阿新 • • 發佈:2019-02-19
1. 雙重校驗鎖:
/*** * 單例模式之雙重校驗鎖 * @since jdk 1.5 * @author yerui *2015年12月17日 */ public class SingletonOne { private static SingletonOne instance = null; private SingletonOne() { } public static SingletonOne getInstance(){ if(instance == null){ synchronized(SingletonOne.class){ if(instance == null){ instance = new SingletonOne(); } } } return instance; } }
注:在JDK1.5之後,雙重檢查鎖定才能夠正常達到單例效果。這是工作中經常用的單例模式。
2.靜態內部類模式
這種方式同樣利用了classloder的機制來保證初始化instance時只有一個執行緒/*** * 單例模式之靜態內部類 * @author yerui *2015年12月17日 */ public class SingletonTwo { private SingletonTwo(){ } private static class SingletonHolder{ private static final SingletonTwo INSTANCE = new SingletonTwo(); } public static final SingletonTwo getInstance(){ return SingletonHolder.INSTANCE; } }