JDK文档------Tutorial - Concurrency Lesson---Executor Interfaces
本文主要介绍Executor的三个接口,其实他们三个是 继承关系的。下面是粗略翻译的文档讲述。
java.util.concurrent包定义了三个执行器接口:
- Executor,一个支持启动新任务的简单界面。
- ExecutorService,Executor的一个子接口,它添加了有助于管理生命周期的功能,包括单个任务和执行程序本身。
- ScheduledExecutorService是ExecutorService的子接口,支持未来和/或定期执行任务。
通常,引用执行器对象的变量声明为这三种接口类型之一,而不是执行程序类类型。
Executor接口
Executor 接口提供单个方法execute旨在直接替代常见的线程创建习惯用法。如果 r 是Runnable对象,而 e 是Executor对象,则可以替换
(new Thread(r)).start();
跟
e.execute(r);
但是,执行的定义不太具体。低级成语创建一个新线程并立即启动它。根据 Executor 实现,execute 可能会执行相同的操作,但更有可能使用现有工作线程来运行 r,或者将 r 放入队列中以等待工作线程可用。(我们将在 Thread Pools部分中介绍工作线程。)
java.util.concurrent 中的执行器实现旨在充分利用更高级的 ExecutorService 和 ScheduledExecutorService 接口,尽管它们也可以与基本的 Executor 接口一起使用。
ExecutorService接口
ExecutorService 接口补充使用类似但更通用的提交方法执行。与 execute 一样,submit 接受可运行的对象,但也接受可调用的对象,这允许任务返回值。submit 方法返回一个 Future 对象,该对象用于检索可调用返回值并管理可调用和可运行任务的状态。
ExecutorService 还提供了提交大型可调用对象集合的方法。最后,ExecutorService 提供了许多方法来管理执行程序的关闭。若要支持立即关闭,任务应正确处理中断。
ScheduledExecutorService 接口
ScheduledExecutorService 接口用 schedule 补充其父 ExecutorService 的方法,该 schedule 在指定的延迟后执行 Runnable 或 Callable 任务。此外,该接口还定义了 scheduleAtFixedRate 和 scheduleWithFixedDelay,它们以定义的时间间隔重复执行指定的任务。
为了大家不被我的翻译误导,下面是官方的文档截图:
需要具体地址的朋友可以给我发评论