Java CompletableFuture.runAfterEither任何一个完成就执行Runnable
假设两个互不相干的任务A和B,只要任何一个完成就触发执行线程Runnable
private void test() {
CompletableFuture f1 = CompletableFuture.supplyAsync(new Supplier<String>() {
@Override
public String get() {
try {
TimeUnit.SECONDS.sleep((int) (Math.random() * 10) + 1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务A");
return "任务A";
}
});
f1.runAfterEither(CompletableFuture.supplyAsync(new Supplier<String>() {
@Override
public String get() {
try {
TimeUnit.SECONDS.sleep((int) (Math.random() * 10) + 1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务B");
return "任务B";
}
}), new Runnable() {
@Override
public void run() {
System.out.println("run");
}
});
}
输出:
I/System.out: 任务A
I/System.out: run
I/System.out: 任务B
本文介绍如何使用Java的CompletableFuture的runAfterEither方法,当两个独立任务中的任意一个完成时,立即执行指定的Runnable任务。通过具体代码示例,展示了任务A和任务B并发执行,并在任一任务完成后触发额外的Runnable执行。
860

被折叠的 条评论
为什么被折叠?



