Java 线程池
什么是线程池(Thread Pool)
一种线程使用模式,解决线程频繁开启、关闭带来的性能开销问题。
Java 提供 4 种线程池
1. FixedThreadPool
固定的线程数据,保持长活,阻塞任务。
2. CachedThreadPool
同步队列一次处理一个任务,线程池中的线程存活 60s,无线程可用时创建新的线程。
3. ScheduledThreadPool
任务提交到延迟队列,定时消费任务。如果需要会创建更多的线程。
4. SingleThreadedExecutor
只创建一个线程,任务阻塞,如果线程因为任务而关闭,重新创建线程。
5. ThreadPoolExecutor
newFixedThreadPool 实现
ThreadPoolExcetuor 函数
以下两种情况会进入 reject 回调
阻塞队列满了并且,线程都在执行。
线程池已关闭
线程被无法提交后有四个处理策略
6. shutdown
调用 shutdown() 之后,线程池会在已提交线程执行完后关闭。
awaitTermination(long timeout, TimeUnit unit), 判断线程池在线程执行完或指定时间内是否关闭。
Callable/Future
Reference
版权声明: 本文为 InfoQ 作者【陈皮】的原创文章。
原文链接:【http://xie.infoq.cn/article/b30b93378e6247d738d8f974a】。文章转载请联系作者。
评论 (1 条评论)