FutureTask 与 CompletableFuture

Future, FutureTask, CompletionService, CompletableFuture 几者比较

先直接采用一下网上某位大佬的比对结果

 

所以,看了这么多,直接用 CompletableFuture 就可以了?至少得用 CompletionService ?

看着有点晕

 

 

 

CompletableFuture 

1、runAsync 和 supplyAsync 有什么区别

runAsync 没有返回值

supplyAsync 有返回值

 

2、future.join() 有什么用?

如下一段代码

    public void xx(){
        CompletableFuture future = CompletableFuture.supplyAsync(() ->{
            System.out.println("begin 1");
            sleep(1000);
            return "1 做完了";
        }).thenAccept(result -> {
            System.out.println(result + " 接下来 2");
        });

        System.out.println("333");
        future.join();
    }

在这里, thenAccept 可以接收上一个任务做完返回来的结果,然后再去做一些事情。

在主线程中的 future.join() 是让future 这个线程执行完,再返回到主线程。不然主线程直接结束, System.out.println(result + " 接下来 2"); 这一句是不会被执行的(因为主线程都已经结束,子线程也没有了)

 

3、这个示例是一个顺序执行的任务,怎样实现同步执行的任务呢。

比如有3个任务要执行,然后,再把三个任务的结果作为下一个任务的参数

 

posted @ 2022-03-12 12:14  aaacarrot  阅读(153)  评论(0编辑  收藏  举报