假设我们的代码有 2 个线程(A 和 B)在某处引用了这个类的同一个实例:
public class MyValueHolder {
private int value = 1;
// ... getter and setter
}
当线程 A 这样做myValueHolder.setValue(7)
时,不能保证线程 B 会读取该值:myValueHolder.getValue()
理论上可以1
永远返回。
然而实际上,硬件迟早会清除二级缓存,因此线程 B7
迟早会读取(通常更早)。
有没有办法让 JVM 模拟最坏的情况,它会1
永远返回线程 B?在这种情况下,这对于使用我们现有的测试来测试我们的多线程代码非常有用。