国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Guava - 并行編程Futures詳解

Guava - 并行編程Futures詳解

2020-06-15 12:22破狼 JAVA教程

這篇文章主要介紹了Guava - 并行編程Futures詳解方法的相關(guān)資料,需要的朋友可以參考下

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

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

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

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

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

使用如:

?
1
2
3
4
5
6
7
8
9
10
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());
  }
});

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

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

下邊是一個(gè)對(duì)于Future的測(cè)試demo:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@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());
}

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜寂寞影视在线观看 | 精品国产乱码久久久久久影片 | 亚洲网站在线观看 | 久久久久久高清 | 成人一区二区三区在线观看 | 亚洲电影在线播放 | 免费的av网站 | 韩国精品一区二区三区 | 在线观看特色大片免费网站 | 国产特级毛片aaaaaaa高清 | 日韩国产精品一区二区 | 99精品久久久 | 久久久精品免费观看 | jlzzjlzz国产精品久久 | 激情五月综合 | 亚洲精品久久久久久下一站 | 国产黄免费在线观看 | 中文字幕一区二区三区精彩视频 | 欧美一级片在线 | 国产精品久久av | 亚洲八区| 欧美日韩一区二区三区免费视频 | 国产农村妇女精品久久 | 999在线观看视频 | 国外成人在线视频网站 | 中文字幕在线观看一区二区 | 骚虎av | 婷婷精品久久久久久久久久不卡 | 国产偷亚洲偷欧美偷精品 | 日本免费精品视频 | 日韩福利片 | 99精品国产一区二区青青牛奶 | 国产欧美精品一区二区三区 | 日本丶国产丶欧美色综合 | 亚洲欧美日韩在线一区二区三区 | 曰韩中文字幕 | 不卡免费在线视频 | 视频一区在线播放 | 北条麻妃在线一区二区免费播放 | 免费又黄又爽又猛大片午夜 | 久久九九这里只有精品 |