池化技术
- 线程属于稀缺资源,由于创建线程和销毁线程十分消耗内存和资源,因此实现线程的复用十分重要
- 将创建的线程存入线程池管理,实现线程的复用,提高了cpu利用率
- 池化技术,比如连接池、对象池、内存池.......
实现线程的复用
- 创建一个线程,执行完线程后该线程就被销毁了,因此需要将线程一直处于运行状态
- 使用阻塞队列来添加任务,当任务执行完毕时,线程一直运行,占用cpu资源,考虑将线程阻塞,当有任务添加进队列时,线程继续执行任务
- 模型:阻塞队列 + 生产者(添加任务)----消费者(执行任务)
线程池模型
思考
- 当任务队列添加满后,考虑
- 扩容队列
- 增加消费者数量 ----> 创建线程
- 当任务执行完毕后,非创建的线程,一直运行占用cpu资源,故需要设置线程超时时间,使空闲线程销毁
- 若队列还是满了后,----->限流
无需区分核心线程数和非核心线程数,只需关心保留的线程数
使用线程池
public static void main(String[] args) {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 15, 5000, TimeUnit.MILLISECONDS,
new ArrayBlockingQueue<Runnable>(10));
threadPoolExecutor.submit(()->{
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + "执行任务");
}
});
}
标签:10,队列,创建,任务,线程,cpu From: https://www.cnblogs.com/Joshua-BlueSky/p/16770648.html