單例模式:兩把鎖版本
阿新 • • 發佈:2018-11-21
Singleton Pattern
Ensure a class has only one instance,and provide a global point of access to it .
單例模式的幾個要點:
- 私有的構造器。禁止外部使用new關鍵字得到例項物件。
- 通過getInstance()得到例項物件。
- getInstance方法的內部邏輯
- 類中例項物件的地方
public class Boy { private static Boy boy; private volatile static Object initLock = new Object(); private Test(){} public static Boy getInstance(){ if (boy == null) { //1、如果有boy返回boy,如果沒boy到2。 //2、檢視執行緒鎖:如果initLock被鎖了就等待;如果initLock沒有鎖就繼續3並且給initLock加鎖。 //3、如果有t返回t,如果沒t就new Test()。 synchronized (initLock) { //synchronized鎖的是固定物件 if (t == null) { t = new Test(); } } } return t; } } public class Demo { public static void main(String[] args) { Boy boy = Boy.getInstance(); } }