栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

CompletableFuture实践用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CompletableFuture实践用法

import com.atguigu.common.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ThreadPoolExecutor;

@RestController
@RequestMapping("/product/thread")
public class ThreadTestController {

    @Autowired
    private ThreadPoolExecutor threadPoolExecutor;


    @RequestMapping("/test")
    public R test() throws Exception {

        long start = System.currentTimeMillis();

        //第一步,异步执行:没有返回值
        CompletableFuture main = CompletableFuture.supplyAsync(() -> {
            try {
                Thread.sleep(3000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("执行了第一个任务了....");
            return "main";
        }, threadPoolExecutor);

        //第二步,等待第一步执行完成后进行异步执行
        CompletableFuture two = main.thenAcceptAsync((res) -> {
            try {
                Thread.sleep(3000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("执行了第二个任务....t" + res);
        }, threadPoolExecutor);

        //第三步,等待第一步执行完成后进行异步执行
        CompletableFuture thread = main.thenAcceptAsync((res) -> {
            try {
                Thread.sleep(3000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("执行了第三个任务....t" + res);
        }, threadPoolExecutor);


        //等待所有完成
        CompletableFuture.allOf(main,two,thread).get();

        System.out.println("主线程执行完毕.....");


        long end = System.currentTimeMillis();

        System.out.println("main总是用时间:"+(end-start));  //所以总共是花了六秒时间

        return R.ok();
    }






}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667167.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号