首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现Java内存模型因果关系测试用例1

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

Stack Overflow用户
提问于 2016-11-18 03:06:54
回答 1查看 140关注 0票数 3

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

代码语言:javascript
复制
@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是不可能的,但没有发生。我认为我的实现没有被更正,但我不知道如何测试。

EN

回答 1

Stack Overflow用户

发布于 2021-11-22 19:23:24

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40663062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档