回覆列表
  • 1 # 悅讀理解

    餓漢式: public class Singleton{ private static Singleton singleton = new Singleton (); private Singleton (){} public Singleton getInstance(){return singletion;} } 懶漢式: public class Singleton{ private static Singleton singleton = null; public static synchronized synchronized getInstance(){ if(singleton==null){ singleton = new Singleton(); } return singleton; } } 比較: 餓漢式是執行緒安全的,在類建立的同時就已經建立好一個靜態的物件供系統使用,以後不在改變 懶漢式如果在建立例項物件時不加上synchronized則會導致對物件的訪問不是執行緒安全的 推薦使用第一種

  • 2 # 小胖18262186866

    單例模式Singleton

    1。 只能有一個例項

    2。 例項必須由單例類自己建立3。

    對整個系統提供這個例項 餓漢式()public class 類名{

    private static 類名 例項= new 類名(); //餓漢式特點 直接例項 用的時候速度快

    private 類名(){} //私有無參構造 只有一個 確保不會被其他類new

    public 類名 getInstance() { //getInstance()特殊方法可以跨棧區域使用 或者遠端跨區域使用 return 例項; }

    } 懶漢式:

    public class 類名{

    private static 類名 例項= null; //先不例項 用到的時候再例項 省資源 //synchronized 同步 如果不加對物件的訪問不是執行緒安全

    public static 類名 synchronized getInstance(){ if(例項==null){

    例項= new 類名();

    }

    return 例項;

    }

    }。

  • 3 # 使用者4618083653657

    1、餓漢式是執行緒安全的,在類建立的同時就已經建立好一個靜態的物件供系統使用,以後不在改變。懶漢式如果在建立例項物件時不加上synchronized則會導致對物件的訪問不是執行緒安全的。

    2、從實現方式來講他們最大的區別就是懶漢式是延時載入,他是在需要的時候才建立物件,而餓漢式在虛擬機器啟動的時候就會建立,餓漢式無需關注多執行緒問題,寫法簡單明瞭,能用則用。真正用到的時候才去建這個單例物件,“餓漢式”是在不管用不用得上,一開始就建立這個單例物件。

    擴充套件資料

    1、單件模式用途:單件模式屬於工廠模式的特例,只是它不需要輸入引數並且始終返回同一物件的引用。單件模式能夠保證某一型別物件在系統中的唯一性,即某類在系統中只有一個例項。

    3、這是個簡單的方法,在不考慮併發的時候這也是個不錯的選擇。但實際上,一個網站是併發的,並且有可能是存在大量併發操作的。如果我們對每次寫入都建立一個數據庫連線,那麼很容易的系統會出現瓶頸,系統的精力將會很多的放在維護連結上而非直接查詢操作上。這顯然是不可取的。

  • 中秋節和大豐收的關聯?
  • I5-9400F和I5-9600K效能相隔多少?