![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 73
KILLBILLKILLING
谁校对时间,谁就会突然老去。
展开
-
性能测试
什么是软件性能和性能测试软件性能 定义:软件的性能是一种软件的非功能特性,它关注的不是软件是否能够完成特定的功能,而是在于完成功能时展现的及时性。由以上定义可知性能关注的是软件的非功能特性,所以一般来说性能测试接入的时机是在功能测试完成之后。由及时性可知性能也是一种指标,可以使用时间或者其他指标来衡量,通常我们会使用某些工具或者手段来检测软件的某些指标是否达到要求,这就是性能测试。性能测试定义:指通过过自动化的测试工具模拟多种正常,峰值以及异常负载条件来对系统的各项指标进行测试。不同人眼中的软件性原创 2021-03-01 22:21:57 · 204 阅读 · 5 评论 -
Jmeter性能测试学习笔记
Jmeter简介:JMeter就是Apche开发的一款测试工具。(可以说是纯Java开发)Jmeter可以做什么:1. 接口测试(主要)2. 性能测试3. 压力测试(主要)4. 数据库测试5. java程序测试Jmeter的优点:1.开源免费2.支持多协议3.轻量级4.功能强大Jmeter的缺点:使用jmeter无法验证JS程序,也无法验证页面UI,必须要和Selenium配合完成Web2.0应用的测试。Jmeter的配置和安装:需要java环境官网地址: https:原创 2021-03-01 20:46:47 · 210 阅读 · 1 评论 -
原子累加器 LongAdde
累加器性能比较private static <T> void demo(Supplier<T> adderSupplier, Consumer<T> action) { T adder = adderSupplier.get(); long start = System.nanoTime(); List<Thread> ts = new ArrayList<>(); // 4 个线程,每人累加 50 万 for (int i = 0;原创 2020-05-21 18:53:00 · 242 阅读 · 1 评论 -
JUC包下的原子类的实现方法
class AccountSafe implements Account { private AtomicInteger balance; public AccountSafe(Integer balance) { this.balance = new AtomicInteger(balance); } @Override public Integer getBalance() { return balance.get(); } @Override public void withdr原创 2020-05-21 18:37:49 · 230 阅读 · 0 评论 -
synchronized的底层原理以及锁膨胀对应的JMM模型
首先先说一下对象头的概念对象头普通对象kclass Word 通俗的话来说就是指这个对象属于哪一个类。数组对象64 位虚拟机 Mark WordMonitor下面说一下Monitor原理Monitor 被翻译为监视器或管程每个 Java 对象都可以关联一个 Monitor 对象,如果使用 synchronized 给对象上锁(重量级)之后,该对象头的Mark Word 中就被设置指向 Monitor 对象的指针刚开始 Monitor 中 Owner 为 null当 Thread原创 2020-05-21 18:14:07 · 178 阅读 · 0 评论 -
深入理解并发编程的JMM内存模型
JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不会受 cpu 指令并行优化的影响(从JMM层面可以更深刻理解线程安全的特性)一.可见性退不出的循环先来看一个现象,main 线程对 run 变量的修改对于 t 线程不可见,导致了 t 线程无法停止:stat原创 2020-05-21 17:23:37 · 123 阅读 · 0 评论 -
线程的状态在操作系统层面和JAVA API层面的区别
理解线程之间的状态转换是并发编程的基本功,基础是重中之重,是学到了就不会随着技术迭代而改变的重要基本功。五种状态这是从 操作系统 层面来描述的【初始状态】仅是在语言层面创建了线程对象,还未与操作系统线程关联【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由 CPU 调度执行【运行状态】指获取了 CPU 时间片运行中的状态当 CPU 时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程的上下文切换【阻塞状态】如果调用了阻塞 API,如 BIO 读写文件,这时该原创 2020-05-21 16:19:40 · 296 阅读 · 0 评论