文档

Java™教程
隐藏目录
执行器接口
路径: 基本的Java类
课程: 并发
章节: 高级并发对象
小节: Executors

执行器接口

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

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

Executor接口

Executor接口提供了一个方法execute,旨在作为常见线程创建惯用法的替代方法。如果r是一个Runnable对象,e是一个Executor对象,你可以将

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

替换为

e.execute(r);

然而,execute的定义不够具体。低级惯用法创建一个新线程并立即启动它。根据Executor的实现,execute可能会做相同的事情,但更可能使用现有的工作线程来运行r,或者将r放入队列中等待工作线程可用。(我们将在线程池部分介绍工作线程。)

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

ExecutorService接口

ExecutorService接口通过一个类似但更灵活的submit方法来补充execute。与execute一样,submit接受Runnable对象,但也接受Callable对象,允许任务返回一个值。submit方法返回一个Future对象,用于检索Callable的返回值和管理CallableRunnable任务的状态。

ExecutorService 还提供了提交大量 Callable 对象的方法。最后,ExecutorService 提供了一些管理执行器关闭的方法。为了支持立即关闭,任务应该正确处理中断

ScheduledExecutorService 接口

ScheduledExecutorService 接口补充了其父接口 ExecutorService 的方法,包括 schedule,它在指定延迟后执行一个 RunnableCallable 任务。此外,该接口定义了 scheduleAtFixedRatescheduleWithFixedDelay,它们可以在指定的时间间隔内重复执行指定的任务。


上一页: 执行器
下一页: 线程池