- newFixedThreadPool用于创建一个固定大小的定长线程池,可以控制线程的最大并发数,超出的线程会在队列中等待
- 因为采用的是无界队列,而且实际线程数永远不会变化,适用于可以预测线程数量的业务中,或者服务器负载较重的场景下,对当前的线程数量进行限制
- 由于是无界队列可以会导致大量的任务积压
- newCachedThreadPool用于创建一个可缓存的线程池,如果线程池长度超过处理需求,可以灵活的回收空闲线程资源,如果没有可回收重用线程时会自动新建线程
- 可以用来创建一个可以无限扩大的线程池(最大线程数Integer.MAX_VALUE),适用于服务器负载较轻,执行很多短期异步任务的场景下
- newSingleThreadExecutor用于创建只有一个线程的定长线程值,只用唯一的工作线程来执行任务,保证所有的任务按照FIFO或者LIFO顺序执行
- 适用于需要保证顺序执行各个任务的场景下,而且需要保证在任意的时间点上不会出现多个任务同时执行
- newScheduledThreadPool创建一个变长的线程池,并且支持定时及周期性任务的执行
- 可以延时启动、定时执行的线程池,适用于需要多个后台线程执行周期性任务的场景下