文档

Java™ 教程-Java Tutorials 中文版
执行器接口
Trail: Essential Classes
Lesson: Concurrency
Section: High Level Concurrency Objects
Subsection: Executors

执行器接口

java.util.concurrent 包定义了三个执行器接口:

通常,引用 executor 对象的变量被声明为这三种接口类型之一,而不是执行器类类型。

Executor 接口

Executor 接口提供单个方法 execute,旨在替代常见的线程创建习惯用法。如果 rRunnable 对象,并且 eExecutor 对象,则可以替换

(new Thread(r)).start();

with

e.execute(r);

但是,execute 的定义不太具体。低级习惯用法创建一个新线程并立即启动它。根据 Executor 实现,execute 可能会做同样的事情,但更有可能使用现有的工作线程来运行 r,或者将 r 放入队列以等待工作线程变为可用。(我们将在 Thread Pools 的部分中描述工作线程。)

java.util.concurrent 中的执行器实现旨在充分利用更高级的 ExecutorServiceScheduledExecutorService 接口,尽管它们也可以使用基本 Executor 接口。

ExecutorService 接口

ExecutorService 接口使用类似但更通用的 submit 方法补充 execute。与 execute 一样,submit 接受 Runnable 对象,但也接受 Callable 对象,允许任务返回值。submit 方法返回 Future 对象,该对象用于获取 Callable 返回值并管理 CallableRunnable 任务的状态。

ExecutorService 还提供了提交 Callable 对象的大集合的方法。最后,ExecutorService 提供了许多用于管理执行器关闭的方法。为了支持立即关闭,任务应正确处理 interrupts

ScheduledExecutorService 接口

ScheduledExecutorService 接口使用 schedule 补充其父 ExecutorService 的方法,它在指定的延时后执行一个 RunnableCallable 任务。此外,接口定义 scheduleAtFixedRatescheduleWithFixedDelay,它以定义的间隔重复执行指定的任务。


Previous page: Executors
Next page: Thread Pools