1. 实现原理#####
首先看一个线程池的流程图:
Paste_Image.png
step1.调用ThreadPoolExecutor的execute提交线程,首先检查CorePool,如果CorePool内的线程小于CorePoolSize,新创建线程执行任务。
step2.如果当前CorePool内的线程大于等于CorePoolSize,那么将线程加入到BlockingQueue。
step3.如果不能加入BlockingQueue,在小于MaxPoolSize的情况下创建线程执行任务。
step4.如果线程数大于等于MaxPoolSize,那么执行拒绝策略。
2.如果当前CorePool内的线程大于等于CorePoolSize,那么将线程加入到BlockingQueue。
线程池中的主工作线程会去队列中拉取任务处理
相关源码: