书史足自悦,安用勤与劬。这篇文章主要讲述CompletableFuturewhenComplete()和thenApply()/thenAccept()区别相关的知识,希望能为你提供帮助。
CompletableFuture中whenComplete()和thenApply()/thenAccept()区别
1.whenComplete()不使用ForkJoinPool中的线程,而是使用当前的主线程
DEMO:
CompletableFuture< String> future = CompletableFuture.supplyAsync(() -> { //使用ForkJoinPool线程 System.out.println("F1"+Thread.currentThread().getName()); return "F1"; } ); //主线程 System.out.println(Thread.currentThread().getName()); CompletableFuture< String> future2 = future.whenComplete((s, throwable) -> { System.out.println(s); System.out.println(throwable); //使用主线程 System.out.println("F2"+Thread.currentThread().getName()); }); future2.join(); System.out.println(future2.get());
输出结果
main F1ForkJoinPool.commonPool-worker-1 F1 null F2main F1
【CompletableFuturewhenComplete()和thenApply()/thenAccept()区别】
2.thenApply()/thenAccept()使用ForkJoinPool中的线程
DEMO
CompletableFuture< String> future2 = CompletableFuture.supplyAsync(() -> { //使用ForkJoinPool线程 System.out.println("F1" + Thread.currentThread().getName()); return "F1"; } ).thenApply(s -> { //使用ForkJoinPool线程 System.out.println("F2" + Thread.currentThread().getName()); return "F2"; }); future2.join(); System.out.println(future2.get());
输出:
F1ForkJoinPool.commonPool-worker-1 F2ForkJoinPool.commonPool-worker-1 F2
推荐阅读
- Android su源代码
- 1.写公共组件,并在app.vue引入
- 适用于企业的13种最佳API监控工具
- 如何使用Flood Element在实际浏览器中执行负载测试()
- 优化PHP-FPM以实现高性能
- 如何使用Google Lighthouse测试你的网站()
- API监测与趋势的重要性的7个原因
- 11种在线业务的综合监控工具
- 在15分钟内使用StackPath增强并保护你的网站