編輯:我的問題是不同的,它與鏈接的問題沒有關係。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) –