文章目录
- 线程池优点
- 线程池创建参数
- 队列种类
- 同步移交队列
- 有界队列
- 无界队列
- 拒绝策略
- DiscardPolicy
- AbortPolicy
- DiscardOldestPolicy
- CallerRunsPolicy
- 线程池执行流程
- 线程池类型
- 定长 FixedThreadPool
- 轮询 ScheduledThreadPool
- 缓存 CachedThreadPool
- 单线程 SingleThreadPool
线程池优点
1.避免线程频繁创建、消亡消耗资源。
2.提高响应效率。
3.线程可管理性。
4.线程可复用性。
线程池创建参数
参数 | 含义 | |
---|---|---|
corePoolSize | 最大核心线程数 | |
maximumPoolSize | 最大线程数 | |
keepAliveTime | 闲置回收时间 | |
unit | keepAliveTime的时间单位 | |
workQueue | 在执行任务之前保存execute的任务的队列 | |
ThradFactory | 创建线程的工厂 | |
handler | 拒绝策略 |
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5,10,2,TimeUnit.SECONDS,null);
threadPoolExecutor.execute(task);
队列种类
同步移交队列
SynchronousQueue,每个插入操作必须等待另一个线程的对应移除操作
有界队列
ArrayBlockingQueue,防止资源耗尽
无界队列
LinkedBlockingQueue,任务执行时间过长时大量任务堆积可能OOM
拒绝策略
DiscardPolicy
直接抛弃
AbortPolicy
抛出异常
DiscardOldestPolicy
抛弃最先进入队列的任务
CallerRunsPolicy
抛弃任务,交给调用线程池的任务来执行