因此,假設我有10件事情要運行,但我一次只能運行3個線程。如何在Java中啓動更多之前等待一個線程完成
ArrayList<NewThread> threads = new ArrayList<NewThread>();
for(int i = 1; i < args.length; i++) {
NewThread t = new NewThread(args[i]);
threads.add(newThread);
if((i%3) == 0) {
for (NewThread nt : threads) {
nt.join();
}
threads.clear();
}
}
NewThreads類實現Runnable。我認爲join()方法會使它等待線程完成,然後再次循環並開始下一批線程,但是我得到一個堆棧溢出異常。我認爲我錯誤地實現了join(),但我不確定如何去做。我目前正在這樣做
public void join() {
this.join();
}
在我的NewThread類。有關如何使這項工作或更好的方式去做的任何建議?
如何使用線程池和SingleThreadExecutor? http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html – 2013-04-24 20:23:56
那麼,這只是一個簡單的錯誤:刪除整個連接方法: – xtraclass 2013-04-24 20:28:08
如果你還沒有開始一個線程,你可能不會想等待它加入。 't.start()'然後't.join()'。 – StoneBird 2013-04-24 20:28:14