ThreadPoolExecutor执行流程:核心线程数、最大线程数、任务队列
1.当任务量小于核心线程数的时候,它会创建一个线程来执行此任务
2.当任务量大于核心线程数,并且没有空闲线程的时候,且线程池的线程数小于最大线程数,此时会将任务存到任务队列里面。
注意:因为把多出来的任务存储在任务队列的成本最小,所以此时线程池会将新任务存在任务队列当中,而非新创建线程来执行任务。
3.当前任务量比较大的时候,此时没有空闲的线程,并且任务队列已经满了,此时会判断当前线程池的任务数量是否大于等于最大线程数。
如果当前线程池的数量小于最大线程数,就创建线程来执行任务;
当前线程池数量等于最大线程数,就会执行拒绝策略。
ThreadPoolExecutor执行流程流程图