ListenableFuture在不同的线程上运行

时间:2014-04-04 21:23:06

标签: multithreading transform future

我正在使用Futures.transform,我希望我的ListenableFuture在不同的线程上运行。有可能吗?我看到ListenableFuture有相同的ThreadExecutor选项,是否有一个选项可以在不同的线程中运行?

详细说明: 我有单线程使用一些异步机制从网络读取数据,具体取决于它获得的请求它必须将请求分派给另一个线程,以便该线程返回以侦听更多请求。我正在尝试使用Futures.transform来做到这一点。

1 个答案:

答案 0 :(得分:1)

您需要的Executor不是sameThreadExecutor。我见过的最常见的是缓存线程池选项,但是如果你只用一个其他线程做一些简单的事情,你可以试试这个:

final ListeningExecutorService executor = 
    MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor());

如果您希望在另一个线程中运行单个任务,则调用executor.submit()将在另一个线程上运行您的Callable。如果您试图在另一个线程中进行未来转换,则可以将此executor传递给Futures.transform