固定线程数的线程池 newFixedThreadPool
概念
- 定长线程池,可控制线程池最大并发数
- 超出的线程会在队列中等待
- 核心线程数和和最大线程池数量相同,没有救急线程
- 阻塞队列是LinkedBlockingQueue,最大容量是Integer.MAV_VALUE
- 适用于任务量已知,相对耗时的任务
单线程化的线程池 newSingleThreadExecutor
概念
- 它只会用唯一的工作线程来执行任务
- 保证所有任务按照指定顺序FIFO执行
- 核心线程和最大线程都是1
- 阻塞队列是LinkedBlockingQueue,最大容量是Integer.MAV_VALUE
- 适用于按照顺序执行的任务
可缓存的线程池 newCachedThreadPool
概念
- 可缓存的线程池,如果线程池长度超过处理需要可灵活回收线程
- 核心线程数是0
- 最大线程数是Integer.MAV_VALUE
- 阻塞线程是SynchronousQueue,不存储元素的阻塞队列,每个插入操作都必须等待一个移除操作
- 适用于任务比较密集,但每个任务都比较短的场景
提供延迟和周期执行的线程池
概念
- 可以执行延迟任务的线程池
- 支持定时及周期性任务执行