JUC并发编程学习笔记(十四)异步回调
生活随笔
收集整理的這篇文章主要介紹了
JUC并发编程学习笔记(十四)异步回调
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
異步回調
Future設計的初衷:對將來的某個事件的結果進行建模
在Future類的子類中可以找到CompletableFuture,在介紹中可以看到這是為非異步的請求使用一些異步的方法來處理
點進具體實現類中,查看方法,可以看到CompletableFuture中的異步內部類,里面是實現的異步方法
以及一些異步方法
通過CompletableFuture可以實現與Ajax一樣的異步調用。
package org.example.asyn;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
/*
* 異步調用:CompletableFuture
* //異步執行
* //成功回調
* //失敗回調
* */
public class Demo01 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableHasReturn() ;
}
public static void CompletableNotReturn() throws ExecutionException, InterruptedException {
//沒有返回值的異步回調
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("執行異步請求完畢");
});
for (int i = 0; i < 5; i++) {
TimeUnit.SECONDS.sleep(1);
System.out.println(i);
}
//獲取回調結果
future.get();
}
public static void CompletableHasReturn() throws ExecutionException, InterruptedException {
//有返回值的異步回調
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
int i = 10/0;
return 1024;
});
System.out.println(future.whenComplete((t, u) -> {//編譯
System.out.println("t:" + t);//t是正常的返回結果
System.out.println("u:" + u);//u是報錯信息
}).exceptionally((e) -> {//編譯異常 /Exception e
e.printStackTrace();
return 123;//異常返回結果
}).get());//獲取回調結果
}
}
總結
以上是生活随笔為你收集整理的JUC并发编程学习笔记(十四)异步回调的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文心一言 VS 讯飞星火 VS chat
- 下一篇: 正则可视化在线工具-更直观地理解和调试正