多线程&高并发jcstress并发测试工具使用教程详解

Posted Roninaxious

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程&高并发jcstress并发测试工具使用教程详解相关的知识,希望对你有一定的参考价值。

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.运行

之 后 会 在 根 目 录 下 生 成 两 个 文 件 , 打 开 i n d e x . h t m l 之后会在根目录下生成两个文件,打开index.html index.html

成功!

以上是关于多线程&高并发jcstress并发测试工具使用教程详解的主要内容,如果未能解决你的问题,请参考以下文章

多线程&高并发深入理解JMM产生的三大问题原子性可见性有序性

多线程&高并发深入浅出可见性

Tomact高并发&Servlet线程处理

多线程&高并发查看Java代码对应的汇编指令教程

多线程&高并发深入浅出原子性

多线程&高并发深入浅出volatile关键字