首页 > 代码库 > Java线程池

Java线程池

线程池的好处

1. 降低资源的消耗

通过重复利用已创建的线程降低线程创建和销毁所造成的消耗

2. 提高响应速度

当任务到达时,任务可以不需要等到线程创建就能立即执行

3. 提高线程的可管理型

线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。

 

实现原理

当提交一个新任务到线程池时,线程池的处理流程为:

技术分享

 

1). 线程池判断核心线程池里的线程是否都在执行任务。

如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。

2). 线程池判断工作队列是否已经满。 

如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如果工作队列满了,则进入下个流程。

3). 线程池判断线程池的线程是否都处于工作状态。

如果没有,则创建一个新的工作线程来执行任务。如果已经满了,则交给饱和策略来处理这个任务。

 

ThreadPoolExecutor执行execute()方法的示意图:

技术分享

 

Java线程池