CompletableFuture详解~join与get的区别
生活随笔
收集整理的這篇文章主要介紹了
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 more2.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的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓逆向_20 --- 模拟器检测、反调
- 下一篇: Vim自动补全神器:YouComplet