文章目录
线程池原理
主要特点
线程复用;控制最大并发数;管理线程。
线程复用
- thread的start启动线程会调用runnable的run方法。
- 我们可以继承重写thread类,在其start方法中添加不断循环调用传递过来的runnable对象。
- 循环方法中不断获取runnable是用queue实现,在获取下一个runnable之前可以是阻塞的。
线程池的组成
1.线程池管理器
创建并管理线程池
2.工作线程
线程池中的线程
3.任务接口
每个任务必须实现的接口,用于工作线程调度其运行
4.任务队列
用于存放待处理任务,提供一种缓冲机制
线程池工作过程
- 如果小于core,马上创建线程运行
- 大于或等于,将任务放到队列
- 队列满了,运行线程小于max,那创建非核心线程来运行
- 大于或等于max,按照handler的拒绝方式来处理
- 当一个线程无事可做,超过keepaliveTime,如果线程数大于core,线程会被停掉。
- 所有任务完成,会收缩到core大小