JAva単例モードとスレッドセキュリティの問題
907 ワード
餓漢式
餓漢式は変数の申明時に初期化作業を完了する
利点:スレッドセキュリティの問題がない
欠点:プログラムのロード時に、単一のモードのエンティティが作成され、パフォーマンスの問題があります.
怠け者風
怠け者式は変数が必要なときに初期化関数を呼び出して構築する
餓漢式は変数の申明時に初期化作業を完了する
利点:スレッドセキュリティの問題がない
欠点:プログラムのロード時に、単一のモードのエンティティが作成され、パフォーマンスの問題があります.
public class Singleton {
//
private Singleton () {}
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
怠け者風
怠け者式は変数が必要なときに初期化関数を呼び出して構築する
package com.roocon.thread.t5;
public class Singleton2 {
private Singleton2() {}
private static volatile Singleton2 instance;
/**
*
*
* @return
*/
public static Singleton2 getInstance () {
// , synchronized,
if(instance == null) {
synchronized (Singleton2.class) {
if(instance == null) {
instance = new Singleton2(); //
// // 1
// // 2
// instance // 3
}
}
}
return instance;
}
}