不想贴源码,只想记一下它的实现思路
类中包含以下几个重要的成员
Work 内部类
关联了一个线程, 可以理解为一条工作流水线,就是用来执行具体工作的
works
工作线程列表,同时间开了多条工作流水线
workQueue
工作队列,用来暂时收留没来得及做的工作
corePoolSize
核心线程数:线程数超过该值时,则把来不及的工作放入workQueue
maximumPoolSize
最大线程数: workQueue放满之后,则新增工作流水线,如线程数超过了该值,就得用RejectedExecutionHandler来处理了
注意事项
- 总线程数在小于corePoolSize时,每次都创建新的线程来执行
- 线程执行完目前的工作后,如果再无工作可做,依据allowCoreThreadTimeOut开关,有可能阻塞在workQueue里,否则就销毁了。