Java中的线程池——Executor框架

来源:互联网 发布:襄阳seo云优化 编辑:程序博客网 时间:2024/06/13 11:53

1 Executor框架简介


我们通常创建的Java线程它既是工作单元,又是执行机制。每创建一个任务就需要一个新建一个线程来执行,这样会极大的消耗系统资源。从JDK5开始,把工作单元和执行分离开,工作单元变为Runable和Callable,而执行机制就是Executor框架。Executor框架的类与接口图如下

2 框架的结构



Executor框架主要由3大部分组成

  • 任务:包括被执行的任务需要实现的接口:Runnable和Callable
  • 任务的执行:包括任务执行的核心接口Executor,以及继承自Executor的ExecutorService接口,和非常重要的两个关键类:ThreadPoolExecutor和ScheduledThreadPoolExecutor。
  • 异步计算的结果:包括接口Future和实现Future接口的FutureTask类

Executor是一个接口,他是Executor框架的基础,它将任务的提交与任务的执行分离。
ThreadPoolExecutor是线程池的核心实现类,用来执行被提交的任务。
ScheduledThreadPoolExecutor是一个实现类,可以在给定的延迟后运行命令,或者定期执行命令。
Future接口和Callable接口的实现类,都可以被ThreadPoolExecutor或ScheduledThreadPoolExecutor执行


上图表示了各个接口的合作关系流程。由主线创建Runable或Callable任务,提交给ExecutorService进行执行。如果存在返回值,则返回一个Future对象,主线程通过get方法 获取任务的返回值,由此就是Executor框架的执行流程。


0 0