是否有一个 ExecutorService
允许我在请求之前提交任务而不开始执行?我正在寻找类似 ScheduledExecutorService
的东西,只不过我想手动触发执行而不依赖于固定时间延迟。
我寻找这个的原因是因为我想创建一组任务,这些任务可以递归地使用从同一组中的并行任务生成的 Future
的结果。因此,我需要首先提交所有任务才能获得一组 Future
,然后才能允许任务开始执行。
最佳答案
这听起来像是 CompletableFuture 的工作
- 将任务的第一部分作为单独的
CompletableFutures
触发执行
- 然后使用
CompletableFuture.allOf(...furures)
创建一个只有当所有事情都完成后才完成的障碍 future - 然后使用诸如
CompletableFuture.thenAccept
之类的组合器之一来安排下一部分任务在屏障 future 完成时执行
但更惯用的使用方法是根据前一个任务的 future 结果来链接每个下一个任务
CompletableFuture<FirstResult> firstTask = //....
CompletableFuture<SecondResult> secondTask = firstTask.thenApply(someTransformation);
CompletableFuture<Void> anotherTaks = firstTask.thenAccept(someConsumer);
CompletableFuture<ThirdResult> combined = firstTask.thenAcceptBoth(secondTask, someFunction);
关于java - 延迟执行服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24854811/