有没有办法确保在其他线程访问该成员变量之前,通过一个线程对volatile 静态成员变量进行操作的一组方法将完成并结束?我正在尝试这样的事情,但我不确定它是否会起作用。
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();
}
}
}
}