一、Executor框架介绍
Executor框架是JDK1.5之后出现的,位于juc包中,是并发程序设计的工具之一。各个版本以来一直在进行修正。
Executor是执行者之意,表示任务的执行者,这里的任务指的是新的线程任务(实现Runnable接口的执行任务)。
整个Executor执行者框架包括多个接口和类,甚至还涉及到阻塞队列的使用,协同实现任务的执行。
下面是简单的Executor框架的类结构:
从上面的类结构中我们可以看到Executor接口是整个框架的祖接口,它大致规划了框架的结构,并定义了执行方法execute(),这个方法需要一个Runnable作为入参,表示执行一个线程任务。从这里也可以看出来这个框架的主要思想:将要执行的任务和具体的执行进行解耦,任务的内容单独定义为一个线程,任务的执行交给该框架进行,只需要将任务提交给框架即可(这个后面会提到)。Runnable入参就表示定义为单独线程的任务内容,execute方法则是执行任务,整个框架定义的就是这样一个任务执行器。
二、Executor接口
Executor接口是整个框架的总接口,正如上面所述,它描述了框架的主要实现思想:任务内容与执行的解耦。其源码很短,我们可以看看:
1 package java.util.concurrent; 2 public interface Executor { 3 4 /** 5 * Executes the given command at some time in the future. The command 6 * may execute in a new thread, in a pooled thread, or in the calling 7 * thread, at the discretion of the {@code Executor} implementation. 8 * 9 * @param command the runnable task 10 * @throws RejectedExecutionException if this task cannot be 11 * accepted for execution 12 * @throws NullPointerException if command is null 13 */ 14 void execute(Runnable command); 15 }