1. 程式人生 > >對懶漢式和餓漢式的理解

對懶漢式和餓漢式的理解

</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;
    }
}