- ThreadPoolExecutor
- ScheduledThreadPoolExecutor
最佳实践
使用有界队列, 控制线程创建数量
可以使用 guava 来创建
ThreadFactory threadFactory = new ThreadFactoryBuilder()
.setNameFormat(threadNamePrefix + "-%d")
.build();
ExecutorService threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MINUTES, workQueue, threadFactory)线程池预热
prestartCoreThread()启动一个核心线程prestartAllCoreThreads()启动所有核心线程
有异常, 线程销毁还是复用
- 使用
execute()时,未捕获异常导致线程终止,线程池创建新线程替代 - 使用
submit()时,异常被封装在Future中,线程继续复用。