"其中线程线程1-4先占满了核心线程和最大线程数量,然后4、5线程进入等待队列,7-10线程被直接忽略拒绝执行,等1-4线程中有线程执行完后通知4、5线程继续执行。"
这一段用词不太明确,容易误导新手,事实上应该是:
1,由于线程预启动,首先创建了1,2号线程,然后task1,task2被执行;
2,但任务提交没有结束,此时任务task3,task6到达发现核心线程已经满了,进入等待队列;
3,等待队列满后创建任务线程3,4执行任务task3,task6,同时task4,task5进入队列;
4,此时创建线程数(4)等于最大线程数,且队列已满,所以7,8,9,10任务被拒绝;
5,任务执行完毕后回头来执行task4,task5,队列清空。
线程池之ThreadPoolExecutor使用ThreadPoolExecutor提供了四个构造方法: 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: 如果对这些参数作用有疑惑的请看 ThreadPoolE...