directExecutor的优势

Advantage of directExecutor

据我了解,Guava 的 MoreExecutors.directExecutor() creates an Executor 将在执行方法调用 return.

之前执行可运行对象

哪些用例需要直接执行器?调用者不能直接调用 runnable.run() 而不是通过创建执行器并将可运行对象提交给该执行器来进行额外的间接调用吗?可能是我错过了它存在的真正目的。我想了解这在什么情况下有用。

很少有地方同时需要 RunnableExecutor

其中之一是例如 ListenableFuture 及其 addListener 方法。如何在同一个线程中立即执行监听器的唯一方法是提供直接执行器。

MoreExecutors.directExecutor() 在调用需要指定执行者来执行任务的 API 时很有用(例如 Futures.transform()listenableFuture.addListener() 等)。

请注意,当您将 directExecutor() 与这些 API 一起使用时,运行nable 可能在以下两个线程之一上 运行:

  • 完成前一个future的线程
  • 调用transform()/addListener()的线程

这种不确定性可能会导致意外问题。所以使用 directExecutor().

时要小心