gpt4 book ai didi

java - 如何实现Java内存模型因果关系测试用例1

转载 作者:行者123 更新时间:2023-12-05 07:46:33 24 4
gpt4 key购买 nike

我正在研究 Java 语言规范 17.4 中的 Java 内存模型。我想测试理解 java 内存模型的因果关系。我在 JMM causality test case 中找到了一组因果关系。 .我实现测试用例 1,它如下:

@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来测试这个案例。r1 == r2 == 1是不可能的,但没有发生。我认为我的实现没有得到纠正,但我不知道如何测试。

最佳答案

您可能正在运行 Intel 架构,而这种竞争条件不会发生。 VM 可以实现比 Java 内存模型要求的模型更严格的模型,但它们不是必须这样做。如果您使用 SPARC 或 ARM,您可能会发现不同的结果。 JMM 试图将所有这些架构包含在一个模型中。

关于java - 如何实现Java内存模型因果关系测试用例1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40663062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com