在Java™教程的Executor Interfaces部分:
java.util.concurrent
包定义了三个执行器接口:
Executor
,一个支持启动新任务的简单界面。ExecutorService
,Executor
的子接口,它添加了有助于管理生命周期的功能,包括单个任务和执行程序本身。ScheduledExecutorService
是ExecutorService
的子接口,支持将来和/或定期执行任务。通常,引用executor对象的变量被声明为这三种接口类型之一,而不是执行器类类型。
最后一句是什么意思?这是否意味着这样:
Executor e = new AClassImplementsTheExecutorInterface();
如果是这样,为什么?
答案 0 :(得分:0)
以下是如何从java.util.concurrent
声明执行者:
ScheduledExecutorService myExecutor = Executors.newSingleThreadScheduledExecutor();
这是一个预定的执行者服务,它扩展了ExecutorService
并准备好了。但是,如果你想创建自己的执行器类,那就像这样
public class MyExecutor implements Executor {
public void execute(Runnable runnable) {
// do something
}
}
取决于您选择的执行者,它或多或少都是专业的。更广泛的Executor
只会让你实现执行方法,但其他人会更多,因为它们更专业。
答案 1 :(得分:0)
这意味着您不直接处理具体实现。相反,您通过界面访问具体类:
Executors.newSingleThreadScheduledExecutor();
返回实现DelegatedScheduledExecutorService
的{{1}}实例。依靠结构而不是抽象并不是一个好习惯。 ScheduledExecutorService
包是许多基于接口的编程示例之一。