-
没有返回值的异步回调
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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复