线程池
1,线程池优点:
①降低资源消耗,复用已创建的线程,减少线程的创建与销毁。
②提高响应速度,当任务到达时,直接用已创建的线程。
③提高线程的可管理性,控制并发量。
2,ThreadPoolExecutor类源码:
- 参数:5个必须参数:
corePoolSize:核心线程池数量
maximumPoolSize:线程池最大数量,
keepAliveTime:非核心线程存活时间
unit:keepAliveTime的单位,
workQueue:阻塞队列,BlockingQueue
2个非必须参数:
threadFactory:线程工厂,用于创建默认线程
handler:拒绝策略。
- 拒绝策略:
AbortPolicy 默认拒绝策略,丢弃任务并抛出异常
DiscardPolicy 直接丢弃任务,不抛出异常(什么都不做)
DiscardOldestPolicy 丢弃阻塞队列(头部),最先入队的任务,然后重新提交任务
CallerRunsPolicy 由调用线程处理该任务,不进线程池。
- 处理流程:
①核心线程池满?
②等待队列满?
③非核心线程池满?
④拒绝策略
参考:
https://javadoop.com/post/java-thread-pool