package com.nanjing.gulimall.zhouyimo.test;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
/**
* @author zhou
*/
public class CompletableFutureAPIDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException {
CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() ->{
//暂停几秒钟线程
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "ABC";
});
//System.out.println(completableFuture.get());//ABC
//和get一样的作用,只是不需要抛出异常
//System.out.println(completableFuture.join());//ABC
//只愿意等2秒
//System.out.println(completableFuture.get(2L,TimeUnit.SECONDS));//抛出异常
//计算完成就返回正常值,否则返回备胎值(传入的参数),立即获取结果不阻塞
//System.out.println(completableFuture.getNow("XXX"));//XXX
//是否打断get方法立即返回括号值
System.out.println(completableFuture.complete("YYY")+"---"+completableFuture.get());//true---YYY
}
}
CompletableFuture-获得结果和触发计算
最新推荐文章于 2024-07-19 14:01:41 发布
本文详细探讨了Java中的CompletableFuture类,如何使用它来异步获取结果并触发计算。通过实例,展示了CompletableFuture的thenApply、thenAccept和thenRun等方法的用法,以及如何优雅地处理异常情况。同时,对比了Java异步编程与Python协程的差异,帮助开发者更好地理解和应用并发编程。
摘要由CSDN通过智能技术生成