を使用して物事をシンプルに保ちたいかenum
public enum MySingleton {
INSTANCE
}
または、それをより複雑にする正当な理由があります
public class MySingleton {
private MySingleton() { }
private static MySingleton instance = null;
public synchronized static MySingleton getInstance() {
if (instance == null)
instance = new MySingleton();
return instance;
}
}
いずれにせよ、volatile を使用しても役に立ちません。
私見、使用する良いシングルトンパターンはありませんvolatile
。必要な場合は、コードを修正または簡素化する必要があります。
AFAIK volatile を使用する唯一のケースは、二重チェックのロック用です
public class MySingleton {
private MySingleton() { }
private static volatile MySingleton instance = null;
public static MySingleton getInstance() {
if (instance == null)
synchronzied(MySingleton.class) {
if (instance == null)
instance = new MySingleton();
}
return instance;
}
}
比較のために、enum
上記の例はサンプルの多くを実行します。
http://javarevisited.blogspot.co.uk/2011/06/volatile-keyword-java-example-tutorial.html
http://www.ibm.com/developerworks/java/library/j-dcl/index.html