他のスレッドがこのメンバー変数にアクセスする前に、1 つのスレッドを介してvolatile staticメンバー変数で動作する一連のメソッドが実行されることを保証する方法はありますか? 私はこのようなことを試みていますが、うまくいくかどうかはわかりません。
public class MyClass
{
private static final Object lock = new Object();
public static volatile MyObj mo; //assume null will be checked before access
public static void initialize()
{
if (mo == null)
{
synchronized(lock)
{
mo = new MyObj();
mo.doInit();
mo.doMoreInit();
}
}
}
}