1.首先创建一个maven项目
2.引入jcstress-core依赖
- <dependency>
- <groupId>org.openjdk.jcstress</groupId>
- <artifactId>jcstress-core</artifactId>
- <version>0.14</version>
- </dependency>
-
3.准备测试代码
- import org.openjdk.jcstress.annotations.*;
- import org.openjdk.jcstress.infra.results.I_Result;
-
- /**
- * @author:Ronin
- * @since:2021/12/2
- * @email:1817937322@qq.com
- */
- @JCStressTest
- @State
- @Outcome(id = {"1", "4"}, expect = Expect.ACCEPTABLE, desc = "这是期待的结果")
- @Outcome(id = "0", expect = Expect.ACCEPTABLE_INTERESTING, desc = "这是不期待的结果")
- public class VisibilityTest {
-
- /**
- * 结果有三种可能 4, 1,0(这个0是因为指令重排)
- */
- private int a = 0;
- private boolean flag = false;
- @Actor
- public void method(I_Result result) {
- if (flag) {
- result.r1 = a * 2;
- } else {
- result.r1 = 1;
- }
- }
-
- @Actor
- public void method2(I_Result result) {
- a = 2; //这个地方有可能会发生指令重排,也就是a=2和flag=true互换
- flag = true;
- }
-
- }
-
-
4.配置
5.运行
之后会在根目录下生成两个文件,打开index.html 之后会在根目录下生成两个文件,打开index.html之后会在根目录下生成两个文件,打开index.html
成功!