CompletableFuture并行异步处理类使用示例
生活随笔
收集整理的這篇文章主要介紹了
CompletableFuture并行异步处理类使用示例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
等待所有任務(wù)執(zhí)行完, 串行執(zhí)行和異步執(zhí)行的高級寫法:?
package com.zhangxueliang.demo.springbootdemo.JUC.c_026_01_ThreadPool;import java.util.Random; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit;/*** @ProjectName springbootdemo_src* @ClassName T06_01_CompletableFuture* @Desicription TODO* @Author Zhang Xueliang* @Date 2019/12/5 16:13* @Version 1.0**/ public class T06_01_CompletableFuture {public static void main(String[] args) {long start,end;start=System.currentTimeMillis();/*priceOfJD();priceOfTB();priceOfTM();*/CompletableFuture<Double> priceOfTM = CompletableFuture.supplyAsync(() -> priceOfTM());CompletableFuture<Double> priceOfJD = CompletableFuture.supplyAsync(() -> priceOfJD());CompletableFuture<Double> priceOfTB = CompletableFuture.supplyAsync(() -> priceOfTB());CompletableFuture.allOf(priceOfJD,priceOfTB,priceOfTM).join();end=System.currentTimeMillis();System.out.println(end-start);}private static double priceOfTM() {delay();return 1.00;}private static double priceOfTB() {delay();return 2.00;}private static double priceOfJD() {delay();return 3.00;}private static void delay() {int time = new Random().nextInt(500);try {TimeUnit.MILLISECONDS.sleep(time);} catch (InterruptedException e) {e.printStackTrace();}System.out.printf("After %s sleep!\n", time);}}Completable好玩的API:
package com.zhangxueliang.demo.springbootdemo.JUC.c_026_01_ThreadPool;import java.util.Random; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit;/*** @ProjectName springbootdemo_src* @ClassName T06_01_CompletableFuture* @Desicription TODO* @Author Zhang Xueliang* @Date 2019/12/5 16:13* @Version 1.0**/ public class T06_01_CompletableFuture {public static void main(String[] args) {CompletableFuture.supplyAsync(()->priceOfJD()).thenApply(String::valueOf).thenApply(str->"price "+str).thenAccept(System.out::println);while (true){}}private static double priceOfTM() {delay();return 1.00;}private static double priceOfTB() {delay();return 2.00;}private static double priceOfJD() {delay();return 3.00;}private static void delay() {int time = new Random().nextInt(500);try {TimeUnit.MILLISECONDS.sleep(time);} catch (InterruptedException e) {e.printStackTrace();}System.out.printf("After %s sleep!\n", time);}}?
總結(jié)
以上是生活随笔為你收集整理的CompletableFuture并行异步处理类使用示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ThreadPoolExecutor的七
- 下一篇: Netty 4.x Netty 实现聊天