我需要找到一种从Future转换为ListenableFuture的方法。 目前我正在使用一个返回Future的服务,但我需要连接一个监听器。 我无法更改服务界面,因为它不属于我。
有一种简单的方法吗?
我已经阅读了番石榴文档,但我仍然找不到办法。
答案 0 :(得分:17)
Guava为此转换提供JdkFutureAdapters
类型。 API州
使用提供普通文件的库所需的实用程序 未来的实例。
例如
Future<?> future = ...;
ListenableFuture<?> listenable = JdkFutureAdapters.listenInPoolThread(future);
但是你应该小心使用它:当 已经 提交任务时很难模仿可听的未来,因为没有办法放一个挂钩完成那里,所以Guava采用一个新的线程并阻塞,直到原始Future
完成。