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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CompletableFuture详解~join与get的区别

發布時間:2024/7/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CompletableFuture详解~join与get的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.相同點:

join()和get()方法都是用來獲取CompletableFuture異步之后的返回值

二.區別:

1.join()方法拋出的是uncheck異常(即RuntimeException),不會強制開發者拋出,

  會將異常包裝成CompletionException異常 /CancellationException異常,但是本質原因還是代碼內存在的真正的異常,

public static void main(String[] args) {CompletableFuture<Integer> f1 = CompletableFuture.supplyAsync(() -> {int i =1/0;return 1;});CompletableFuture.allOf(f1).join();System.out.println("CompletableFuture Test");}

異常信息

Exception in thread "main" java.util.concurrent.CompletionException: java.lang.ArithmeticException: / by zeroat java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273)at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280)at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1592)at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1582)at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) Caused by: java.lang.ArithmeticException: / by zeroat com.gabriel.stage.utils.IpAddressUtil.lambda$main$0(IpAddressUtil.java:44)at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)... 5 more

2.get()方法拋出的是經過檢查的異常,ExecutionException, InterruptedException?需要用戶手動處理(拋出或者 try catch)

public static void main(String[] args) {CompletableFuture<Integer> f1 = CompletableFuture.supplyAsync(() -> {int i =1/0;return 1;});try {f1.get();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ExecutionException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("CompletableFuture Test");}

總結

以上是生活随笔為你收集整理的CompletableFuture详解~join与get的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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