ExecutorService vs CompletableFuture
2022-09-01 21:19:28
我一直在尝试实现一个异步过程,其中父方法调用一个子方法,该子方法将依次调用三个不同的方法。我希望所有这些过程都是异步完成的,即在并行进行子方法中的这三个调用之后,控件应返回到父方法并继续其其余执行。
我有这个代码,当测试工作时工作正常。
public ReturnSomething parent(){
child();
...//rest to UI
}
private void child(){
ExecutorService executorService = Executors.newFixedThreadPool(3);
Runnable service1 = () -> {
MyFileService.service1();
};
Runnable service2 = () -> {
MyFileService.service2();
};
Runnable service3 = () -> {
MyFileService.service3();
};
executorService.submit(service1);
executorService.submit(service2);
executorService.submit(service3);
}
现在,我的领导要求我使用它。
public ReturnSomething parent(){
child();
...//rest to UI
}
private void child(){
CompletableFuture.supplyAsync(() -> MyFileService.service1();
CompletableFuture.supplyAsync(() -> MyFileService.service2();
CompletableFuture.supplyAsync(() -> MyFileService.service3();
}
我知道CompletableFuture是Java 8的新功能,但是第二个代码如何比第1个更好?由于对于 ExecutorService,我不会调用 “get()” 方法,因此我不会等待 aysnc 响应。那么,有人可以解释一下有什么区别吗?