最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Guava - 并行編程Futures詳解

 更新時間:2016年09月15日 09:24:07   作者:破狼  
這篇文章主要介紹了Guava - 并行編程Futures詳解方法的相關(guān)資料,需要的朋友可以參考下

Guava為Java并行編程Future提供了很多有用擴(kuò)展,其主要接口為ListenableFuture,并借助于Futures靜態(tài)擴(kuò)展。

繼承至Future的ListenableFuture,允許我們添加回調(diào)函數(shù)在線程運(yùn)算完成時返回值或者方法執(zhí)行完成立即返回。

對ListenableFuture添加回調(diào)函數(shù):

Futures.addCallback(ListenableFuture<V>, FutureCallback<V>, Executor)

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

使用如:

Futures.addCallback(ListenableFuture, new FutureCallback<Object>() {

  public void onSuccess(Object result) {
    System.out.printf("onSuccess with: %s%n", result);
  }

  public void onFailure(Throwable thrown) {
    System.out.printf("onFailure %s%n", thrown.getMessage());
  }
});

同時Guava中Futures對于Future擴(kuò)展還有:

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

下邊是一個對于Future的測試demo:

@Test
public void should_test_furture() throws Exception {
  ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));

  ListenableFuture future1 = service.submit(new Callable<Integer>() {
    public Integer call() throws InterruptedException {
      Thread.sleep(1000);
      System.out.println("call future 1.");
      return 1;
    }
  });

  ListenableFuture future2 = service.submit(new Callable<Integer>() {
    public Integer call() throws InterruptedException {
      Thread.sleep(1000);
      System.out.println("call future 2.");
  //    throw new RuntimeException("----call future 2.");
      return 2;
    }
  });

  final ListenableFuture allFutures = Futures.allAsList(future1, future2);

  final ListenableFuture transform = Futures.transform(allFutures, new AsyncFunction<List<Integer>, Boolean>() {
    @Override
    public ListenableFuture apply(List<Integer> results) throws Exception {
      return Futures.immediateFuture(String.format("success future:%d", results.size()));
    }
  });

  Futures.addCallback(transform, new FutureCallback<Object>() {

    public void onSuccess(Object result) {
      System.out.println(result.getClass());
      System.out.printf("success with: %s%n", result);
    }

    public void onFailure(Throwable thrown) {
      System.out.printf("onFailure%s%n", thrown.getMessage());
    }
  });

  System.out.println(transform.get());
}

官方資料主頁:https://awk.so/@code.google.com!/p/guava-libraries/wiki/ListenableFutureExplained

以上就是對Guava - 并行編程Futures 的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料謝謝大家對本站的支持!

相關(guān)文章

  • 淺談JAVA在項(xiàng)目中如何自定義異常

    淺談JAVA在項(xiàng)目中如何自定義異常

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著JAVA在項(xiàng)目中如何自定義異常展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • SpringBoot Security安裝配置及Thymeleaf整合

    SpringBoot Security安裝配置及Thymeleaf整合

    這篇文章主要介紹了SpringBoot Security安裝配置及Thymeleaf整合,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳

    Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了Java 基于tcp協(xié)議實(shí)現(xiàn)文件上傳,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • Java 自定義Spring框架與核心功能詳解

    Java 自定義Spring框架與核心功能詳解

    Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)
    2021-10-10
  • 詳解Java并發(fā)編程中的優(yōu)先級隊(duì)列PriorityBlockingQueue

    詳解Java并發(fā)編程中的優(yōu)先級隊(duì)列PriorityBlockingQueue

    PriorityBlockingQueue是Java中實(shí)現(xiàn)了堆數(shù)據(jù)結(jié)構(gòu)的線程安全的有界阻塞隊(duì)列。本文將會深入解讀PriorityBlockingQueue的源碼實(shí)現(xiàn),感興趣的可以了解一下
    2023-05-05
  • Java基礎(chǔ)學(xué)習(xí)之標(biāo)簽

    Java基礎(chǔ)學(xué)習(xí)之標(biāo)簽

    在Java中,標(biāo)簽必須在循環(huán)之前使用, 一個循環(huán)之中嵌套另一個循環(huán)的開關(guān),從多重嵌套中continue或break,該文詳細(xì)介紹了標(biāo)簽的相關(guān)知識,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們還很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot集成slf4j日志配置的方法

    SpringBoot集成slf4j日志配置的方法

    本文主要介紹了SpringBoot集成slf4j日志配置的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • jstl EL表達(dá)式遍歷Map的方法

    jstl EL表達(dá)式遍歷Map的方法

    這篇文章主要介紹了jstl EL表達(dá)式遍歷Map的方法的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 詳解Java如何實(shí)現(xiàn)基于Redis的分布式鎖

    詳解Java如何實(shí)現(xiàn)基于Redis的分布式鎖

    在不同進(jìn)程需要互斥地訪問共享資源時,分布式鎖是一種非常有用的技術(shù)手段。這篇文章運(yùn)用圖文和實(shí)例代碼介紹了Java如何實(shí)現(xiàn)基于Redis的分布式鎖,文章介紹的很詳細(xì),對Java和Redis剛興趣的朋友們可以參考借鑒,下面來一起看看。
    2016-08-08
  • SpringBoot2.x入門教程之引入jdbc模塊與JdbcTemplate簡單使用方法

    SpringBoot2.x入門教程之引入jdbc模塊與JdbcTemplate簡單使用方法

    這篇文章主要介紹了SpringBoot2.x入門教程之引入jdbc模塊與JdbcTemplate簡單使用方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論

万全县| 莱阳市| 北川| 常州市| 开远市| 罗定市| 东宁县| 连江县| 遂宁市| 佛学| 龙南县| 罗甸县| 合山市| 永丰县| 大城县| 临西县| 诸城市| 西城区| 浦江县| 长岛县| 民乐县| 尚志市| 嘉祥县| 芦山县| 崇阳县| 平潭县| 慈溪市| 台安县| 无极县| 内江市| 重庆市| 鲁甸县| 惠东县| 贵州省| 贵德县| 姜堰市| 缙云县| 普格县| 西林县| 东乡族自治县| 张家口市|