是否有针对Executor而不是ExecutorService的方案。执行器界面的意图?

时间:2019-03-08 08:40:24

标签: java executorservice executor

我想知道是否有任何理由使用Executor代替ExecutorService。

据我所知,JDK中没有实现Executor接口,它也不是ExecutorService,这意味着您必须关闭服务,以免发生内存泄漏。您无法关闭Executor,但可以使用ExecutorService来关闭它。

因此,在任何情况下,您都将使用类似的内容:

private final Executor _executor = Executors.newCachedThreadPool();

Executor界面背后的意图是什么?示例值得赞赏。

1 个答案:

答案 0 :(得分:7)

JavaDoc 在这种情况下是您的朋友

  

此界面提供了一种将任务提交与   每个任务将如何运行的机制,包括线程的详细信息   使用,安排等

进一步阅读

  

但是,执行器界面并不严格要求   执行是异步的。在最简单的情况下,执行者可以运行   提交的任务立即在调用者的线程中:

 class DirectExecutor implements Executor {
     public void execute(Runnable r) {
         r.run();
     }
 }

这些定义已经对我有所表达。

关于您的用法示例。恕我直言,不,我永远不会那样使用这个界面。
但是它可以用作接受的参数。

例如我想运行一个任务,但是我希望方法的用户来决定如何运行此任务。

public void run(final Executor taskExecutor) {
   taskExecutor.execute(this.myTaskRunnable);
}

Executor实现可以在幕后进行,它可以是同步的(如上面的示例)或异步的,但我不在乎。
user ,它将负责处理它。