特别感谢:慕课网jimin老师的《Java并发编程与高并发解决方案》课程,以下知识点多数来自老师的课程内容。
jimin老师课程地址:Java并发编程与高并发解决方案
高并发相关基础知识
0、工具
- Apache Bench(AB) :Apache附带的工具,测试网站性能 — ApacheBench安装及使用方法
- Jmeter : Apache组织开发的压力测试工具(比AB更强大)
- 代码测试方法 :Semaphore、CountDownLatch类
- Semaphore类:信号量
信号量,在我们测试的过程中充当监控并发数的角色。能够维持在同一时间的请求的并发量,达到并发量上线,会阻塞进程。 - CountDownLatch类:计数器向下减的闭锁
说明:假设计数器的值为3,线程A执行了await()方法之后,进入了awaiting等待状态。在其他线程的方法中执行了countDown()方法之后,计数器的值都会减一,直到计数器的值减为0,线程A的方法才继续执行。所以说,countDownLatch类可以阻塞线程执行,并且当满足指定条件后让线程继续执行。
- Semaphore类:信号量
/**
* @author JeffOsmond
* @version V1.0
* @package com.superboys.concurrency
* @description 【线程不安全】模拟示例
* @email yinjiaxing_web@163.com
* @time 2018/4/3
*/
@NotThreadSafe
@Slf4j
public class CountExample1 {
//请求总数
public static int clientTotal = 5000;
//同时并发执行的线程数
public static int threadTotal = 200;
//计数