我有以下代码:
public class Simulation
{
public static volatile boolean IS_EVEN_TICK;
}
以及另一个(可运行)类中的以下内容:
public void run()
{
while (true)
{
// flip the "even/uneven tick" switch
Simulation.IS_EVEN_TICK = !Simulation.IS_EVEN_TICK;
}
}
据我了解,这通常不是线程安全的,因为对 Simulation.IS_EVEN_TICK 的写入取决于该变量的当前值。然而,这个线程是唯一写入变量的线程,所有其他线程只会读取变量(如果他们访问它的话)。
变量是否足够不稳定以确保所有线程都从中读取正确的值,还是我需要同步对变量的访问?