1.开篇笑话
线程池在面试中也是常问的,记得第一次面试的时候,面试官问我,请说一下有哪些常见的线程池,我就一本正经的回答到:C3P0,DBCP,巴拉巴拉,尴尬!(逃)
2.常见线程池
Java提供了四种线程池:
newFixedThreadPool
:创建固定大小的线程池。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。newCachedThreadPool
:创建一个可缓存的线程池。如果线程池的大小超过了处理任务所需要的线程,那么就会回收部分空闲(60秒不执行任务)的线程,当任务数增加时,此线程池又可以智能的添加新线程来处理任务。newSingleThreadExecutor
:创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。newScheduledThreadPool
:创建一个大小无限的线程池。此线程池支持定时以及周期性执行任务的需求。newSingleThreadScheduledExecutor
:创建一个单线程的线程池。此线程池支持定时以及周期性执行任务的需求。