1. Java线程池的种类
- 基本: ThreadPoolExecutor
- CachedThreadPool: 线程数量无限制,会释放空闲线程
- FixedThreadPool: 指定工作线程最大数量,不释放工作线程
- ScheduledThreadPool: 单线程顺序执行
- SingleThreadExecutor:延迟或者定期执行
2. 线程池参数设置
- corePoolSize: 基本大小。线程池建立以后里面并没有线程,有任务到来才创建线程,当线程池中的线程数目达到corePoolSize后,就会将任务加到缓存队列里面
- maximumPoolSize: 线程池允许创建的最大线程数。缓存队列满,并且已创建的线程数小于这个梳理,就会创建新的线程执行任务
- keepAliveTime: 线程活动保持时间。线程池的工作线程空闲后,保持存活的时间
- workQueue: 任务队列
- ArrayBlockingQueue
- LinkedBlockingQueue
- SynchronousQueue
- PriorityBlockingQueue
- handle饱和策略
- AbortPolicy: 抛出异常
- CallerRunsPolicy: 调用者自己执行
- DiscardOldestPolicy: 丢弃时间最早的任务
- DiscardPolicy: 不执行
3. 线程池状态
- RUNNING:启动后
- SHUTDOWN: 调用shutdown(), 没有正在关闭, 不能接收新任务, 尝试终止正在执行的任务
- STOP:调用shutdownNow()
- TIDYING:线程池和队列为空
- TERMINATED: terminated()回调完成