核心思想
- 复用线程,避免创建线程时间,降低线程创建与销毁代价
- 池化,方便统一管理与监控
实现原理
实现思想
生产-消费者模型:将任务生产与任务消费完全解耦,达到缓冲目的
实现原理
1. workerCount < corePoolSize启动新线程
2. 进入缓冲队列,等待非核心线程:
2.1. 实现过程
- workerCount >= corePoolSize加入缓冲队列,等待执行
- 缓冲队列已满且workerCount < maximumPoolSize启动新线程
2.2. 线程池队列BlockingQueue:
- ArrayBlockingQueue:规定大小阻塞队列,先进先出,指定容量
- LinkedBlockingQueue:默认大小Integer.MAX_VALUE,注意容量
- PriorityBlockingQueue:自定义compareTo制定元素排序规则,不保证同优先级元素顺序
- SynchronousQueue:put操作必须等待take操作,否则不能添加元素,如果有空闲线程则会重复使用,线程空闲60s会自动回收