我想知道在多線程環境下,哪一個在實踐中更好。我明白Singleton作爲枚舉類型在類加載時創建一個實例。除此之外,我沒有看到其他任何重要的東西。有沒有優點和缺點?Enum單身人士與Singleton雙重檢查鎖定
辛格爾頓爲Enum
類型:
public enum Singleton {
INSTANCE;
public void doSomething(){ ... }
}
辛格爾頓與double-checked locking
:
public class Singleton{
private volatile static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
@DmitryBeransky這個版本從1.5開始是安全的,在實踐中是1.4。但即使1.6也面臨着它的報廢。 (如果線程安全,我的意思是安全的,因爲它很安全,不安全,因爲很容易出錯,單身人士可能不安全(當然不明智)。) – 2012-08-12 20:17:23