java-多線程下的單例模式
阿新 • • 發佈:2017-08-08
餓漢式 return ret div 解決 有一個 必須 懶漢式 修改
/* 多線程下的單例-懶漢式會有多線程問題 餓漢式不會有多線程問題 */ //餓漢式 class Single { private static final Single s = new Single(); //final修改的變量必須要顯示初始化 private Single() {} //構造函數私有化不讓外界創建對象 public static Single getInstance() { //外界不能創建對象,那麽需要對外提供公共的訪問方式--封裝的思想(隱藏實現細節,對外提供公共的訪問方式) return s; } } //懶漢式 class Single2 {private static Single2 s = null; private Single2() {} public static Single2 getInstance() { if (s == null) { //加入雙重判斷為了解決效率問題,只要有一個線程創建完對象後,其他線程就不需要判斷鎖操作了提高效率 synchronized(Single2.class) { if (s == null) { s = new Single2(); } } }return s; } }
java-多線程下的單例模式