我正在使用Futures.transform,我希望我的ListenableFuture在不同的线程上运行。有可能吗?我看到ListenableFuture有相同的ThreadExecutor选项,是否有一个选项可以在不同的线程中运行?
详细说明: 我有单线程使用一些异步机制从网络读取数据,具体取决于它获得的请求它必须将请求分派给另一个线程,以便该线程返回以侦听更多请求。我正在尝试使用Futures.transform来做到这一点。
答案 0 :(得分:1)
您需要的Executor
不是sameThreadExecutor
。我见过的最常见的是缓存线程池选项,但是如果你只用一个其他线程做一些简单的事情,你可以试试这个:
final ListeningExecutorService executor =
MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor());
如果您希望在另一个线程中运行单个任务,则调用executor.submit()
将在另一个线程上运行您的Callable
。如果您试图在另一个线程中进行未来转换,则可以将此executor
传递给Futures.transform
。