我正在尝试创建一个具有依赖关系的对象。关键是,具有 ExecutorService 的类和生成 Runnables 的类是不同的。这是简单的抽象:
public class Main {
private ExecutorService pool; // Initialized before executing main
public static void main(String[] args) {
List<Batch> batches = // fetching...
for(Batch batch : batches) {
Runnable r = batch.getRunnable();
pool.submit(r);
}
}
}
public class Batch {
public Runnable getRunnable() {
Runnable r1 = // creating...
Runnable r2 = // creating...
// FIXME: demand that r2 run after r1 finishes
return // something suitable. r1? r2? or new Runnable?
}
}
当这些类是一个时,我曾经使用 CompletableFuture:
CompletableFuture.runAsync(r1, pool)
.thenRunAsync(r2, pool)
.exceptionally(ex -> { // Do something });
但现在pool
居住在另一个班级。我看到 CompletableFuture 类的文档更多,但我仍然不确定它是否有帮助。
有没有人在这里有一些知识?