多线程并发知识点整理(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38292691/article/details/86668099


3-1案例环境初始化

3.1.1并发与线程安全

什么叫做线程安全?

代码所谓的进程,有多个线程在同时运行,而这些线程,可能会同时运行同一段代码。如果每次运行的结果和单条运行的结果是一样的,而且其他变量的值也和语气是一样的。我们就认为这是线程安全的。

简单的说,就是兵法环境下,得到我们期望的正确的结果。

自定义一个注解的写法:

3-3 并发模拟-工具

ab测试

-n 表示本次请求的数量,-c 表示并发的请求数

total transferred:表示所有请求的响应数据总和,包括每个HTTP响应数据的头信息,和正文数据的长度。需要注意的是,这里不包括HTTP请求数据的长度。

html transferred:表示所有请求响应的数据中,正文数据的总和,也就是减去了上面去掉了头信息的长度

Requests per second:表示的是吞吐率,吞吐率是与并发数相关的,请求总数相同,但是如果并发数不一样,吞吐率还是很可能有很大的差异的。

计算公式:Complet requests / Time token for tests = 吞吐率

Time per request:表示用户平均请求的等待时间

下面一个Time per request,表示服务器平均请求的等待时间

JMeter测试工具

注意使用之前打开,图形结果,查看结果树,Log viewer,添加监听器。

3-4并发模拟-代码

CountDownLatch类:计数器,每次执行countDown(),计数器就会减一,当计数器从3变成0之后呢,之前的线程A才会继续执行。从这里可以看出CountDownLatch这个类可以阻塞线程,并保证线程在满足某种特定的条件下,继续执行。

Semaphore类:(信号量)可以阻塞进程,并且可以控制同一时间请求的并发量。

CountDownLatch和Semaphore在使用时,通常和线程池一起使用。CountDownLatch保证线程执行完,在执行其他的处理操作。Semaphore更适合处理控制同时并发的线程数。因此,如果我们想模拟并发测试的时候,emmm....

猜你喜欢

转载自blog.csdn.net/qq_38292691/article/details/86668099