一、基础篇 1.线程池的参数 1> CorePoolSize 核心线程数 2> MaxPoolSize 最大线程数 3> QueueCapacity 队列容量 4> KeepAliveSecond 没有任务存活时间 5> TimeUnit 时间单位 6> rejectedExecutionHandl ...
分类:
其他好文 时间:
2020-06-05 23:23:52
阅读次数:
101
一 什么是Semaphore、Semaphore用来做什么 semaphore是计数信号量,可用于多线程并发执行时,限制获取资源的线程数量。常用场景为:限流。 二 Semaphore用法 1 public class SemaphoreTest { 2 3 public static void ma ...
分类:
其他好文 时间:
2020-06-03 00:59:30
阅读次数:
72
by 豆豆 大家都知道当任务过多,任务量过大时如果想提高效率的一个最简单的方法就是用多线程去处理,比如爬取上万个网页中的特定数据,以及将爬取数据和清洗数据的工作交给不同的线程去处理,也就是生产者消费者模式,都是典型的多线程使用场景。 那是不是意味着线程数量越多,程序的执行效率就越快呢。 显然不是。线 ...
分类:
编程语言 时间:
2020-05-31 16:10:26
阅读次数:
63
为什么要找最佳线程数 1.过多的线程只会造成,更多的内存开销,更多的CPU开销,但是对提升QPS确毫无帮助 2.使用多线程就是在正确的场景下通过设置正确个数的线程来充分的利用 CPU 和 I/O 最大化程序的运行速度。 从两个方面和分析: CPU 密集型程序 I/O 密集型程序 1、CPU 密集型程 ...
分类:
编程语言 时间:
2020-05-30 13:02:12
阅读次数:
125
Executors Executors.newFixedThreadPool(int):创建一个固定线程数的线程池,其最大线程数跟核心线程数一样大。使用LinkBlockingQueue. public static ExecutorService newFixedThreadPool(int nT ...
分类:
编程语言 时间:
2020-05-28 21:48:05
阅读次数:
70
转自:https://www.cnblogs.com/nele/p/6502750.html 线程池执行的流程: 当任务提交给ThreadPoolExecutor 线程池中,先检查核心线程数是否已经全部使用, 如果没有交由核心线程去执行任务, 如果核心线程数已经全部占用,则将任务添加到队列里面, 如 ...
分类:
编程语言 时间:
2020-05-27 20:14:40
阅读次数:
60
Semaphore介绍 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,他通过协调各个线程,以保证合理的使用公共资源。 Semaphore的简单示例 使用Semaphore来简单模拟数据库连接池 public class Pool { //可同时访问资源的最大线程数 private ...
分类:
其他好文 时间:
2020-05-27 18:47:23
阅读次数:
58
创建多线程和线程池 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; //开启的线程数 int threa ...
分类:
编程语言 时间:
2020-05-26 21:58:56
阅读次数:
95
启动jmeter,默认有一个测试计划,然后,修改计划名称,尽量使其变得有意义,容易看懂,然后,新建一个线程组。 线程数设置为1,方便演示; 添加一个http信息头管理器; 那么,为什么要添加http信息头管理器: Jmeter不是浏览器,因此其行为并不和浏览器完全一致。这些Jmeter提供的配置元件 ...
分类:
Web程序 时间:
2020-05-26 16:49:12
阅读次数:
91