我想知道是否有任何理由使用Executor而不是ExecutorService。
据我所知,JDK中没有Executor
接口的实现,这也不是ExecutorService
,这意味着你必须关闭服务,以便没有内存泄漏。你不能关闭Executor
,但你可以用ExecutorService
做到这一点。
那么,是否有任何情况可以使用类似的东西:
private final Executor _executor = Executors.newCachedThreadPool();
Executor
接口背后的意图是什么?举例赞赏。
在这种情况下,JavaDoc是你的朋友
此接口提供了一种将任务提交与每个任务运行方式的机制分离的方法,包括线程使用,调度等的详细信息
再往下看你
但是,Executor接口并不严格要求执行是异步的。在最简单的情况下,执行程序可以立即在调用者的线程中运行提交的任务:
class DirectExecutor implements Executor {
public void execute(Runnable r) {
r.run();
}
}
这些定义已经表达给我了。
关于您的使用示例。 Imho,不,我永远不会使用这样的界面。 但是,它可能被用作公认的论点。
例如。我想运行一个任务,但我希望我的方法的用户决定如何运行这个任务。
public void run(final Executor taskExecutor) {
taskExecutor.execute(this.myTaskRunnable);
}
Executor
实现可能是幕后的任何一个,它可能是同步的(如上例所示)或异步但我并不在乎。
这是用户将负责处理它。