我一直在尝试实现一个异步过程,其中父方法调用一个子方法,该子方法将依次调用三个不同的方法。我希望所有这些过程都异步完成,即在子方法中的这三个调用并行进行后,控件应该返回到父方法并继续执行其余部分。
我有这段代码,经过测试可以正常工作。
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 的新内容,但是第二个代码如何比第一个更好?因为对于 ExecutorService,我没有调用“get()”方法,所以我不会等待 aysnc 响应。那么,有人可以解释一下有什么区别吗?
达令说
郎朗坤
慕妹3242003
相关分类