天天看点

Guava - 并行编程Futures

Guava为Java并行编程Future提供了很多有用扩展,其主要接口为ListenableFuture,并借助于Futures静态扩展。

继承至Future的ListenableFuture,允许我们添加回调函数在线程运算完成时返回值或者方法执行完成立即返回。

对ListenableFuture添加回调函数:

其中 FutureCallback是一个包含onSuccess(V),onFailure(Throwable)的接口。

使用如:

同时Guava中Futures对于Future扩展还有:

transform:对于ListenableFuture的返回值进行转换。

allAsList:对多个ListenableFuture的合并,返回一个当所有Future成功时返回多个Future返回值组成的List对象。注:当其中一个Future失败或者取消的时候,将会进入失败或者取消。

successfulAsList:和allAsList相似,唯一差别是对于失败或取消的Future返回值用null代替。不会进入失败或者取消流程。

immediateFuture/immediateCancelledFuture: 立即返回一个待返回值的ListenableFuture。

makeChecked: 将ListenableFuture 转换成CheckedFuture。CheckedFuture 是一个ListenableFuture ,其中包含了多个版本的get 方法,方法声明抛出检查异常.这样使得创建一个在执行逻辑中可以抛出异常的Future更加容易

JdkFutureAdapters.listenInPoolThread(future): guava同时提供了将JDK Future转换为ListenableFuture的接口函数。

下边是一个对于Future的测试demo:

更多Guava博文:

<a href="http://greengerong.github.io/blog/2014/11/21/guava-bing-xing-bian-cheng-futures/">Guava – 并行编程Futures</a>

<a href="http://greengerong.github.io/blog/2014/11/27/guava-eventbus/">Guava – EventBus(事件总线)</a>

本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/p/4113860.html,如需转载请自行联系原作者