1.线程池的好处是什么?
(1)线程池可以重用存在的线程,减少对象创建销毁的开销;
(2)线程池有效的控制了最大的并发线程数,,提高系统资源的使用率,同时避免了过多资源竞争避免堵塞;
(3)提供定时、定期执行,单线程,并发数控制等功能。
2.线程池的工作原理?
线程池创建时里面没有线程,任务队列时作为参数传进来的。不过即使队列里有任务,线程池也不会马上执行它。
当调用execute方法添加一个任务时,线程池会判断,如果运行的线程数量小于corePoolSize(核心线程数),就创建核心线程执行该任务;如果正在运行的线程数大于等于核心线程数,就把任务放入任务队列;当队列满了且运行的线程数没达到maximumPoolSize(最大线程数),就创建非核心线程立即执行任务;如果任务队列满了且线程数已经达到最大线程数,就拒绝(线程池的四种拒绝策略)。
为什么不通过Executors去创建线程池?
--阿里巴巴开发规范