class MyClass
{
private static volatile Resource resource;
public static Resource getInstance()
{
if(resource == null)
resource = new Resource();
return resource;
}
}
如果您使用易失性,安全发布发生(即,一旦引用对另一个线程可见,数据也可用),我的怀疑是根据实践中的java并发性。那么我可以在这里使用它吗?但如果它是正确的,那么假设 thread1 现在检查“资源”并且它为空,因此它开始创建对象。当 thread1 创建对象时,另一个线程,即 thread2 来并开始检查“resource”的值,thread2 发现它为 null(假设创建“resource”对象需要相当长的时间,并且由于 thread1 尚未完成创建,所以安全发布没有发生,因此 thread2 不可用)那么它也会开始创建对象吗?如果是,则类不变量中断。我对么?请帮助我理解这里对 volatile 的特殊使用。