小心Guava的future方法allAsList和successfulAsList區別

  1. transform:對於ListenableFuture的返回值進行轉換。
  2. allAsList:對多個ListenableFuture的合併,返回一個當所有Future成功時返回多個Future返回值組成的List對象。注:當其中一個Future失敗或者取消的時候,將會進入失敗或者取消。
  3. successfulAsList:和allAsList相似,唯一差別是對於失敗或取消的Future返回值用null代替。不會進入失敗或者取消流程。
  4. immediateFuture/immediateCancelledFuture: 立即返回一個待返回值的ListenableFuture。
  5. makeChecked: 將ListenableFuture 轉換成CheckedFuture。CheckedFuture 是一個ListenableFuture ,其中包含了多個版本的get 方法,方法聲明拋出檢查異常.這樣使得創建一個在執行邏輯中可以拋出異常的Future更加容易
  6. JdkFutureAdapters.listenInPoolThread(future): guava同時提供了將JDK Future轉換為ListenableFuture的接口函數。
  7. addCallBack為Future增加回調

以上為Guava工作包中Future的主要方法

下面比較下allAsList與successfulAsList

小心Guava的future方法allAsList和successfulAsList區別

初始化兩個正常的future

小心Guava的future方法allAsList和successfulAsList區別

allAsList測試-正常

兩個正常的future聚合後走success流程

小心Guava的future方法allAsList和successfulAsList區別

allAsList測試-異常

構建一個會拋出異常的future,聚合,此時allAsList,走onFailure流程,打印:

小心Guava的future方法allAsList和successfulAsList區別

小心Guava的future方法allAsList和successfulAsList區別

successfulAsList測試

針對有異常Future聚合,successfulAsList仍然會走成功流程,出錯的future會以null值返回,打印:

小心Guava的future方法allAsList和successfulAsList區別

小心Guava的future方法allAsList和successfulAsList區別

番石榴


分享到:


相關文章: