因此,假设我有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