编辑:我的问题是不同的,它与链接的问题没有关系。Java等待所有主题完成
我跟随完成处理程序的代码。
FutureTask<Void> futureTask = new FutureTask<Void>(() -> {
System.out.println("callback");
return null;
});
Runnable task =() -> {
for(int i=0; i<5; i++) {
System.out.println(Thread.currentThread().getName() + " " + i);
}
futureTask.run();
};
new Thread(task).start();
new Thread(task).start();
基本上我正在寻找可变数量的任务的完成处理程序,或者是否有另一种方法?
我从answer中受到启发,但似乎它是某个库的一部分,而我正在寻找本地解决方案。
这是我最终以结果处理程序完成未来的尝试。
public void test() {
CompletableFuture
.supplyAsync(() -> method1())
.supplyAsync(() -> method2())
.supplyAsync(() -> result());
}
public String method1() {
System.out.println("calling 1");
return "method1";
}
public String method2() {
System.out.println("calling 2");
return "method2";
}
public String result() {
System.out.println("result");
return "result";
}
为什么'futureTask.run();'不能用旧方法替换? –
你基本上可以通过执行一个在其前任调用Thread.join()来链接你的任务,然后做你想做的任何事情。 – Izruo
可能重复的[等到所有线程完成他们的工作在java](http://stackoverflow.com/questions/7939257/wait-until-all-threads-finish-their-work-in-java) –