如果我有一个 volatile boolean 值(我们称之为有效),下面这段代码在 Java 中是线程安全的吗?
if (valid)
return;
valid = true;
或者,我是否需要同步,因为仅当 valid 为 false 时才将其设置为 true(因此 valid 的设置取决于其当前值)?
最佳答案
这需要同步,因为如果一个线程将 valid 评估为 false,然后在赋值之前暂停执行,然后另一个线程出现并检查 valid 是否为 false,在将 valid 设置为 true 之前,您将有两个线程在运行从这里开始的代码(你可能不想要)。
关于java - 可变 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897211/