1.空腹の男モード
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
2.スラッカーモード
1.スラッカーモード-シングルスレッドバージョン
public class Singleton1 {
private static Singleton1 instance = null;
public static Singleton1 getInstance(){
if (instance == null){
instance = new Singleton1();
}
return instance;
}
}
2.レイジーマンモード-マルチスレッドバージョン-低パフォーマンス
ublic class Singleton1 {
private static Singleton1 instance = null;
public synchronized static Singleton1 getInstance(){
if (instance == null){
instance = new Singleton1();
}
return instance;
}
}
3.レイジーマンモード-マルチスレッドバージョン-2番目の判断-高性能
public class Singleton1 {
private static volatile Singleton1 instance = null;
public static Singleton1 getInstance(){
if (instance == null){
synchronized (Singleton1.class){
if (instance == null){
instance = new Singleton1();
}
}
}
return instance;
}
}