首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏CSDN专栏

    (Java并发编程——JUC)从JMM内存模型的角度来分析CAS并发性问题

    void main(String[] args) { } } @Data class Result{ public Integer r1 = null; } 3.3.6 压测并发 - jcstress 通常在并发编程中,往往需要大量的测试,才能知道是否存在并发问题 这里使用 jcstress 来做压测 首先添加jar包 <! -- jcstress 核心包 --> <dependency> <groupId>org.openjdk.jcstress</groupId> <artifactId>jcstress-core -- jcstress测试用例包 --> <dependency> <groupId>org.openjdk.jcstress</groupId> <artifactId>jcstress-samples ; @org.openjdk.jcstress.annotations.Result @Data public class Result{ public Integer r1 = null;

    20410编辑于 2025-10-13
  • 来自专栏Spark学习技巧

    高级面试:JAVA内存模型

    由于复现需要大量的线程切换事件,因此我借助了 OpenJDK CodeTools 项目的 jcstress 工具 [5],来对该例子进行并发情况下的压力测试。 具体的命令如下所示: $ mvn archetype:generate -DinteractiveMode=false -DarchetypeGroupId=org.openjdk.jcstress - =test -Dversion=1.0 $ cd test $ echo 'package org.sample; import org.openjdk.jcstress.annotations.*; import org.openjdk.jcstress.infra.results.IntResult2; @JCStressTest @Outcome(id = {"0, 0", "0, 2", "1 openjdk/jcstress/tests/unsafe/UnsafePublication.java

    82020发布于 2018-12-05
  • 来自专栏一个正经的程序员

    一次群聊引发的血案

    一道证明题 Jcstress(Java Concurrency Stress)是一个帮助测试JVM和硬件并发正确性的工具库。 UseCompressedOops -XX:+UnlockDiagnosticVMOptions -XX:CompileCommand="print com.jcst.UnsafePublication_jcstress call" -XX:CompileCommand="inline, com.jcst.UnsafePublication::publish" -XX:+PrintAssembly -jar target/jcstress.jar 通过DCL的已知问题和最后根据jcstress得到汇编的结果来看,由于没有改变单线程最终结果,指令重排是确实发生了。

    23640编辑于 2022-04-11
  • 来自专栏艾小仙

    一次群聊引发的血案

    一道证明题 Jcstress(Java Concurrency Stress)是一个帮助测试JVM和硬件并发正确性的工具库。 UseCompressedOops -XX:+UnlockDiagnosticVMOptions -XX:CompileCommand="print com.jcst.UnsafePublication_jcstress call" -XX:CompileCommand="inline, com.jcst.UnsafePublication::publish" -XX:+PrintAssembly -jar target/jcstress.jar 通过DCL的已知问题和最后根据jcstress得到汇编的结果来看,由于没有改变单线程最终结果,指令重排是确实发生了。

    36920发布于 2021-01-05
  • 来自专栏京东技术

    并发编程中的大坑:你的直觉&有序性问题

    02 用jcstress测试并发程序 Java程序是依赖JVM解释执行,内部还有复杂的JIT优化,这些优化和JVM参数、 版本、以及CPU架构都有关系,和热点代码也有关系,JIT优化对并发测试的影响往往是颠覆式的 好在现在已经有了不少并发测试的工具,jcstress是OpenJDK团队开源的并发测试工具,下面我们用jcstress来重写一下上面的测试程序。 04 更匪夷所思的编译器优化 前面我们基于jcstress的测试程序没有使用while()循环来检查isReady,而是用了if()语句,为什么要做这种替换呢?

    65720发布于 2021-04-22
  • 来自专栏Java面试

    【并发编程】1 synchronized底层实现原理、Java内存模型JMM;monitor、CAS、乐观锁和悲观锁;对象的内存结构、Mark Word、锁升级

    演示:jcstress是java并发压测工具,使用方法如下:1)修改pom文件,添加依赖<dependency> <groupId>org.openjdk.jcstress</groupId> org.openjdk.jcstress.annotations. *;import org.openjdk.jcstress.infra.results.I_Result;@JCStressTest //用并发压缩工具jcstress 测试类方法@Outcome 注:如果mvn clean install 无法生成jcstress.jar包,可在pom文件中加入以下插件,重新mvn clean install,即可生成jcstress.jar<dependencies -- 打包的名字 jcstress.jar --> <finalName>jcstress</finalName>

    41211编辑于 2024-05-13
  • 来自专栏c++与qt学习

    JUC学习之共享模型之内存

    分支,相加为 0,再切回线程2 执行 num = 2 相信很多人已经晕了 这种现象叫做指令重排,是 JIT 编译器在运行时的一些优化,这个现象需要通过大量测试才能复现: 借助 java 并发压测工具 jcstress 3.JUC整理笔记三之测试工具jcstress Java中jcstress 高并发测试框架简单使用教程 mvn archetype:generate -DinteractiveMode=false -DarchetypeGroupId=org.openjdk.jcstress - DarchetypeArtifactId=jcstress-java-test-archetype -DarchetypeVersion I_Result r) { num = 2; ready = true; } } 执行 mvn clean install java -jar target/jcstress.jar

    43330编辑于 2021-12-29
  • 来自专栏Java面试

    volatile详解、原理

    首先看下不加volatile的情况1)修改pom.xml文件,添加依赖<dependency> <groupId>org.openjdk.jcstress</groupId> <artifactId >jcstress-core</artifactId> <version>0.14</version></dependency>2)编写代码//为什么使用此工具,直接运行代码不行吗? 只有使用大量的线程去执行,才能测试出指令重排序的效果@JCStressTest //用并发压缩工具jcstress 测试类方法@Outcome(id = {"0, 0", "1, 1", "0, (II_Result r) { //读 r.r1 = y; r.r2 = x; }}mvn clean install,java -jar xxx\target\jcstress.jar3

    38900编辑于 2024-05-13
  • Java 并发编程常见问题及解决方案

    仅给线程必要的资源访问权限清晰的资源管理:明确识别共享资源,建立清晰的资源访问规则防御性编程:假设所有异步操作都会失败,为每一步操作添加异常处理避免过早优化:先保证正确性,再通过性能测试定位瓶颈进行优化充分测试:使用多线程测试工具(如 jcstress

    45710编辑于 2025-08-07
  • 来自专栏程序那些事

    杰哥教你面试之一百问系列:java多线程

    Java Concurrency Stress Test (jcstress): Java官方提供的测试工具,用于检测并发代码中的不确定行为。

    66450编辑于 2023-09-01
领券