1、餓漢式的兩種寫法
餓漢式的特點:在獲取單例物件之前物件就已經建立完成了。
package com.juc程式設計.volatile0;
public
class
singleeh
public static singleeh getsingleeh()*/
//2.靜態**塊
private
static
final singleeh singleeh;
private
singleeh()
static
public
static singleeh getsingleeh()
}class
test
}
2、懶漢單例的四種寫法
懶漢單例的特點:在真正需要單例的時候才建立出該物件。
package com.juc程式設計.volatile0;
public
class
singlelh
private
static singlelh singlelh;
//定義的時候不初始化
public
static singlelh getsinglelh()
return singlelh;
}}
package com.juc程式設計.volatile0;
public
class
singlelh
private
static singlelh singlelh;
public
synchronized
static singlelh getsinglelh()
return singlelh;
}}
package com.juc程式設計.volatile0;
public
class
singlelh
private
static singlelh singlelh;
public
synchronized
static singlelh getsinglelh()
}return singlelh;
}}
volatile雙重檢查機制(推薦方式)
package com.juc程式設計.volatile0;
public
class
singlelh
//volatile在此處主要的作用是保證可見性和禁止指令重排序
private
volatile
static singlelh singlelh;
public
static singlelh getsinglelh()
}}return singlelh;
}}
3、靜態內部類單例方式
靜態內部類是在被呼叫時才會被載入,這種方案實現了懶漢單例的一種思想,需要用到的時候才會去建立單例,加上jvm的特性,這種方式又實現了執行緒安全的建立單例物件。
package com.juc程式設計.volatile0;
public
class
singlestatic
private
static
class
innerclass
public
static singlestatic getsinglestatic()
}
4、列舉實現單例package com.juc程式設計.volatile0;
/** 列舉實際上是一種多例的模式,如果我們直接定義了乙個例項就相當於是單例了
* */
public
enum singleenum
單例模式 8種實現方式
餓漢式2種 靜態常量餓漢式 靜態 塊餓漢式 懶漢式3種 執行緒不安全懶漢式 執行緒安全懶漢式 同步 塊懶漢式 還有3種 雙重檢查 靜態內部類 列舉方式 1.靜態常量餓漢式 public class singleton public static singleton getinstance 優點 實現...
8種單例設計模式
單例模式有八種方式 餓漢式 靜態常量 餓漢式 靜態 塊 懶漢式 執行緒不安全 懶漢式 執行緒安全,同步方法 懶漢式 執行緒安全,同步 塊 雙重檢查 靜態內部類 列舉 餓漢式 靜態變數 class singleton 2.本類內部建立物件例項 private final static singleto...
設計模式之單例模式的5種實現方式
1 餓漢式 執行緒安全,呼叫效率高,但是不能延時載入 public class user 其他地方通過此方法獲取單例物件 public static user getinstance 2.懶漢式 執行緒安全,呼叫效率不高,但是能延時載入 public class singletondemo2 方法同...