キーワードstatic
とvolatile
Java に慣れ始めています。私が構築しているシングルトン クラスに関して、次のようなデザインが表示されるのはなぜですか?
public class Singleton{
private static volatile Singleton _instance;
public static Singleton getInstance(){
if(_instance == null){
synchronized(Singleton.class){
if(_instance == null)
_instance = new Singleton();
}
}
return _instance;
}
}
これの代わりに?
public class Singleton{
private static volatile Singleton _instance = new Singleton();
public static Singleton getInstance(){
return _instance;
}
}
最初の設計は 2 番目の設計よりも利点がありますか? 私が見ることができる唯一の利点は、2 番目の設計がメソッド全体を同期することです。これには、メソッド全体のブロックが必要になる場合があります。しかし、それに対する私の反論は、メソッドは1行だけで、目立ってブロックすることはないということですよね?