對懶漢式和餓漢式的理解
阿新 • • 發佈:2019-02-10
</pre>今天查了一下懶漢式和餓漢式的資料,整理如下:<p></p><p><span style="font-size:14px"><span style="white-space:pre"></span>1.這兩種方式都是為了保證物件只被建立一次,</span></p><p><span style="font-size:14px"><span style="white-space:pre"></span>2.懶漢式只有在用到物件的時候才建立(第一次使用物件的時候建立),餓漢式是直接建立物件.</span></p><p><span style="font-size:14px"><span style="white-space:pre"></span>3.都沒有public的構造方法</span></p><p><span style="font-size:14px"><span style="white-space:pre"></span>4.懶漢式需要多執行緒解決併發問題</span></p><p><span style="font-size:14px"></span></p><pre name="code" class="java">//餓漢式 public class SingletonDemo { private SingletonDemo (){ } private static SingletonDemo singletonDemo = new SingletonDemo(); //獲取物件的方法 private static SingletonDemo getInstance(){ return singletonDemo; } }
<pre name="code" class="java" style="font-size: 14px;">//懶漢式
public class SingletonDemo {
private SingletonDemo(){
} private volatile static SingletonDemo singletonDemo = null; //獲取物件的方法 private static SingletonDemo getInstance(){ if(singletonDemo == null ){ //同步程式碼塊:不在方法上加鎖是處理高併發問題 synchronized (SingletonDemo.class) { if (singletonDemo == null) { singletonDemo = new SingletonDemo(); } } } return singletonDemo; } }