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个任务要执行,然后,再把三个任务的结果作为下一个任务的参数