关于执行人声明

时间:2015-12-28 01:20:27

标签: java interface

在Java™教程的Executor Interfaces部分:

  

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

     
      
  • Executor,一个支持启动新任务的简单界面。
  •   
  • ExecutorServiceExecutor的子接口,它添加了有助于管理生命周期的功能,包括单个任务和执行程序本身。
  •   
  • ScheduledExecutorServiceExecutorService的子接口,支持将来和/或定期执行任务。
  •   
     

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

最后一句是什么意思?这是否意味着这样:

Executor e = new AClassImplementsTheExecutorInterface();

如果是这样,为什么?

2 个答案:

答案 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包是许多基于接口的编程示例之一。