1. 程式人生 > >java單例模式,懶漢式和餓漢式的區別,雙層鎖式等

java單例模式,懶漢式和餓漢式的區別,雙層鎖式等

單例就是該類只能返回一個例項。

單例所具備的特點:

1.私有化的建構函式

2.私有的靜態的全域性變數

3.公有的靜態的方法

一般常見到的是3種:

餓漢式執行緒不安全):

public class Singleton1 {

      private Singleton1() {};

      private static Singleton1 single = new Singleton1();//因為餓漢嘛,餓了所以先直接吃,直接先new了再說

      public static Singleton1 getInstance() {

          return single;

     }

 }

懶漢式執行緒不安全

public class Singleton2 {

      private Singleton2() {}

      private static Singleton2 single=null;//因為懶漢嘛,所以什麼時候餓了什麼時候再吃

      public tatic Singleton2 getInstance() {

           if (single == null) {  

              single = new Singleton2();

          }  

         return single;

     }

 }

最有效的是雙層鎖式的方法內容如下執行緒安全

public class Singleton3 {

  private Singleton3() {}

  private static Singleton3 single ;

  public static Singleton3 getInstance() {

   if(null == single){

      synchronized(single ){

       if(null == single){

          single = new Singleton3();

        }

      }

     }

    return single;

  }

}

更加詳細的有7種,而且描述也較為準確下面也是我的一篇部落格,想看的可以開啟看一下。

http://blog.csdn.net/dianzijinglin/article/details/50898769