我想知道是否有任何理由使用Executor代替ExecutorService。
据我所知,JDK中没有实现Executor
接口,它也不是ExecutorService
,这意味着您必须关闭服务,以免发生内存泄漏。您无法关闭Executor
,但可以使用ExecutorService
来关闭它。
因此,在任何情况下,您都将使用类似的内容:
private final Executor _executor = Executors.newCachedThreadPool();
Executor
界面背后的意图是什么?示例值得赞赏。
答案 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 ,它将负责处理它。