Java多线程-线程池ThreadPoolExecutor

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

使用线程池主要为了解决一下几个问题:
通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。
对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。

Executor
线程池类图
这里写图片描述

Executor接口只有一个execute方法。
ExecutorService是Executor的子接口,增加了一些常用的对线程的控制方法。
AbstractExecutorService是一个抽象类。
ThreadPoolExecutor就是实现了这个AbstractExecutorService抽象类。

ThreadPoolExecutor
这里写图片描述

参数说明

corePoolSize
核心线程数,默认情况下核心线程会一直存活,即使处于闲置状态也不会受存keepAliveTime限制。
除非将allowCoreThreadTimeOut设置为true。

maximumPoolSize
线程池所能容纳的最大线程数。超过这个数的线程将被阻塞。
当任务队列为没有设置大小的LinkedBlockingDeque时,这个值无效。

keepAliveTime
非核心线程的闲置超时时间,超过这个时间就会被回收。

unit
指定keepAliveTime的单位,如TimeUnit.SECONDS。
当将allowCoreThreadTimeOut设置为true时对corePoolSize生效。

workQueue
线程池中的任务队列,SynchronousQueue,LinkedBlockingDeque,ArrayBlockingQueue等。

threadFactory
线程工厂,提供创建新线程的功能。

猜你喜欢

转载自blog.csdn.net/u012869196/article/details/81031104