是否有確保通過一個線程上揮發性靜態成員變量運行一組方法的一種方式將完成,並在與之前其他線程上網本成員變量?我正在嘗試這樣的事情,但我不確定它會起作用。確保初始化方法成員變量之前完全被訪問
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();
}
}
}
}
您正在尋找'Singleton'模式,並且此代碼不會**正確執行任何操作。 – OldCurmudgeon
你打算實施單身模式嗎?你的'mo'字段可以被替換爲現在的狀態,所以我不確定你在問什麼 –