<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    CompletableFuture

    很久以前多線程是這樣創(chuàng)建:
    Thread t1 = new Thread();
    Thread t2 = new Thread();
    t1.start(); // 啟動新線程
    t2.start(); // 啟動新線程

    由于創(chuàng)建和銷毀線程是非常耗資源,因此改成線程建好后不銷毀,可以重用,用戶只需提供run方法的具體實現(xiàn):
    public static void main(String[] args) throws Exception {
            ExecutorService executor = Executors.newSingleThreadExecutor();
            Future<String> stringFuture = executor.submit(new Callable<String>() {
                @Override
                public String call() throws Exception {
                    Thread.sleep(2000);
                    return "async thread";
                }
            });
            Thread.sleep(1000);
            System.out.println("main thread");
            System.out.println(stringFuture.get());

        }

    但如果很多線程被創(chuàng)建,并且線程間有依賴,即按流程和條件執(zhí)行線程,實現(xiàn)起來就有點復雜,于是CompletableFuture橫空出世。一共有50各方法可供使用。
    CompletableFuture.supplyAsync(),相當于創(chuàng)建了ExecutorService,同時也創(chuàng)建了Callable,然后提交到線程池中執(zhí)行。
    CompletableFuture<String> futureA = CompletableFuture.supplyAsync(() -> "任務(wù)A");
    CompletableFuture<String> futureB = CompletableFuture.supplyAsync(() -> "任務(wù)B");
    CompletableFuture<String> futureC = futureB.thenApply(b -> {
          System.out.println("執(zhí)行任務(wù)C.");
          System.out.println("參數(shù):" + b);//參數(shù):任務(wù)B
          return "a";
    });


    !!How to use CompletableFuture and Callable in Java
    https://ducmanhphan.github.io/2020-02-10-How-to-use-CompletableFuture-Callable-in-Java/

    使用CompletableFuture優(yōu)化你的代碼執(zhí)行效率
    https://www.cnblogs.com/fingerboy/p/9948736.html

    CompletableFuture 使用詳解
    https://www.jianshu.com/p/6bac52527ca4

    使用CompletableFuture
    https://www.liaoxuefeng.com/wiki/1252599548343744/1306581182447650


    https://github.com/eugenp/tutorials/blob/master/core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java

    posted on 2020-08-14 11:46 paulwong 閱讀(303) 評論(0)  編輯  收藏 所屬分類: J2SE多線程

    主站蜘蛛池模板: 亚洲爆乳AAA无码专区| AA免费观看的1000部电影| 亚洲色偷精品一区二区三区| 亚洲乱码无码永久不卡在线| 黄a大片av永久免费| 亚洲精品视频免费看| 天堂在线免费观看| 免费一级特黄特色大片| 中文字幕精品三区无码亚洲| 亚洲一卡2卡三卡4卡有限公司| 亚洲欧洲中文日韩av乱码| 男女交性永久免费视频播放 | 久久WWW免费人成人片| 国产一区二区三区免费| xxxxx做受大片视频免费| 亚洲妇女无套内射精| 亚洲av无码专区在线| 亚洲色图国产精品| 久久亚洲国产欧洲精品一| 亚洲综合在线观看视频| AV在线播放日韩亚洲欧| 免费一级毛片在线观看| 国产男女猛烈无遮挡免费视频网站 | 亚洲AV永久青草无码精品| 亚洲一区二区高清| 亚洲国产av无码精品| 亚洲高清最新av网站| 亚洲AV无码乱码在线观看| 国产a级特黄的片子视频免费| 全免费a级毛片免费**视频| 无码日韩人妻av一区免费| 大学生一级毛片免费看| 在线看片无码永久免费视频| 国产精品久久久久免费a∨| 全免费毛片在线播放| 无码国产精品一区二区免费虚拟VR| 16女性下面无遮挡免费| 日本高清在线免费| 皇色在线视频免费网站| 我要看免费的毛片| 国产精品久久久久影院免费|