概述
-
没有返回值的异步回调
public class CompletableFutureDemo { public static void main(String[] args) { //没有返回值的runAsync 异步回调 CompletableFuture completableFuture = CompletableFuture.runAsync(()->{ try { TimeUnit.SECONDS.sleep(2); System.out.println("Future线程执行...."); } catch (InterruptedException e) { e.printStackTrace(); } }); System.out.println("主线程执行....."); try { //获取异步结果 System.out.println(completableFuture.get()); //get方法将阻塞 } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
输出结果为
-
有返回值的异步回调
public class CompletableFutureDemo { public static void main(String[] args) throws ExecutionException, InterruptedException { //有返回值的supplyAsync 异步回调 CompletableFuture<Integer> completableFuture = CompletableFuture.supplyAsync(()->{ try { TimeUnit.SECONDS.sleep(2); // int a = 10/ 0; //异常测试 System.out.println("Future线程执行...."); } catch (InterruptedException e) { e.printStackTrace(); } return 1024; }); System.out.println("主线程执行....."); System.out.println(completableFuture.whenComplete((t,u)->{ System.out.println("t->" + t); //输出正常结果 System.out.println("u->" + u); //输出异常信息 }).exceptionally((e)->{ System.out.println(e.getMessage()); return 500; }).get()); } }
正常输出
异常输出
最后
以上就是乐观航空为你收集整理的十八、Future 异步回调的全部内容,希望文章能够帮你解决十八、Future 异步回调所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复