场景1 : 一个线程池 核心线程数 0 ,队列100,最大线程数10, 运行过程中发现部门任务运行,部分不运行,原因:
线程池的执行流程: 任务提交核心线程数执行任务;继续来任务放入队列,队列满了,创建新线程(线程数< 最大线程数),然后才是拒绝策略。
场景2: 一个线程池 核心线程数2,最大队列10000,最大线程数16,拒绝策略 new 新的临时线程处理;现象 提交的任务时而运行时而不运行。
定位发现一个问题: 任务执行时间长这种概率越高;
原因:任务执行时间长,在队列中排队,等待运行;时而执行是因为非公平队列抢占锁的原因