我正在研究Java语言规范17.4中的Java内存模型。我想测试因果关系来理解java内存模型。我在JMM causality test case中找到了一组因果关系。我实现了测试用例1,它遵循:< / p>
@JCStressTest
@State
public class CausalityTestCase1 {
int x = 0;
int y = 0;
@Actor
public void actor1(IntResult2 r) {
r.r1 = x;
if (r.r1 >= 0) {
y = 1;
}
}
@Actor
public void actor2(IntResult2 r) {
r.r2 = y;
x = r.r2;
}
}
我使用jcstress lib测试这个case.r1 == r2 == 1是不可能的,但是没有发生。我认为我的实现没有得到纠正,但我不知道如何测试。