JUC包下Executor类提供了大量创建连接池的静态方法,常见就有4种:
-
创建使用固定线程数的线程池—newFixedThreadPool(int threadNum)
- 核心线程数和最大线程数是一样的,没有救急线程
- 阻塞队列是LinkedBlockingQueue,最大容量是Integer.MAX_VALUE
-
单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO)执行 newSingleThreadPool()
- 核心线程数和最大线程数都是1
- 阻塞队列是LinkedBlockingQueue,最大容量是Integer.MAX_VALUE
- 适合执行顺序型的任务
-
可缓存线程池 newCacheThreadPool()
- 核心线程数为0
- 最大线程数是Integer.MAX_VALUE
- 阻塞队列为SynchronousQueue:不存储元素的阻塞队列,每个插入操作都必须等待一个移除操作
- 适合任务数比较密集,但每个任务执行时间比较短的情况
-
提供了延迟和周期执行功能的线程池 newScheduledThreadPool