日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Google Guava并发– ListenableFuture

發布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Google Guava并发– ListenableFuture 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在上一篇文章中,我介紹了使用番石榴庫中com.google.common.util.concurrent包中的Monitor類。 在本文中,我將繼續介紹Guava并發實用程序,并討論ListenableFuture接口。 ListenableFuture通過添加接受完成偵聽器的方法,從java.util.concurrent包擴展了Future接口。

可聽的未來

ListenableFuture行為與java.util.concurrent.Future完全相同,但是具有方法addCallback(Runnable, ExecutorService)在給定的executor中執行回調。 這是一個例子:

ListenableFuture futureTask = executorService.submit(callableTask)futureTask.addListener(new Runnable() {@Overridepublic void run() {..work after futureTask completed}}, executorService);

如果您在添加回調時提交的任務已完成,它將立即運行。 使用addCallback方法有一個缺點,即Runnable無法訪問future產生的結果。 要訪問Future的結果,您需要使用FutureCallback 。

FutureCallback

FutureCallback接受從Future產生的結果,并指定onSuccess和onFailure方法。 這是一個例子:

class FutureCallbackImpl implements FutureCallback<String> {@Overridepublic void onSuccess(String result){.. work with result}@Overridepublic void onFailure(Throwable t) {... handle exception}}

通過使用Futures類中的addCallback方法來附加FutureCallback :

Futures.addCallback(futureTask, futureCallbackImpl);

此時,您可能會問,當ExecutorService僅返回Futures時,如何獲取ListenableFuture實例? 答案是使用ListenableExecutionService 。

ListenableExecutionService

要使用ListenableExecutionService只需使用對MoreExecutors.listeningDecorator(ExecutorService)的調用來裝飾ExecutorService實例,例如:

ExecutorsService executorService = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());

結論

借助添加回調(無論是Runnable還是處理成功和失敗條件的FutureCallback功能, ListenableFuture可能會成為您的武器庫的寶貴補充。 我創建了一個單元測試使用證明ListenableFuture可以作為一個依據 。 在我的下一個職位,我要覆蓋Futures類,它包含與工作靜態方法futures 。

資源資源

  • 番石榴項目首頁
  • ListenableFuture API
  • 樣例代碼


參考: Google Guava并發–我們的JCG合作伙伴 Bill Bejeck的《可編碼的隨機想法》博客中的ListenableFuture。

翻譯自: https://www.javacodegeeks.com/2012/11/google-guava-concurrency-listenablefuture.html

總結

以上是生活随笔為你收集整理的Google Guava并发– ListenableFuture的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。