天天看點

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,如需轉載請自行聯系原作者