这么说吧,我有10件事要运行,但是一次只能运行3个线程。
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类中。关于如何使它工作或有更好的解决方案的任何建议?
最佳答案
这只是一个简单的错误。
删除方法
public void join() {
this.join();
}
此方法一次又一次地调用自身。
NewThread应该扩展Thread。
或第二种方式:
保留方法并调用
Thread.currentThread.join();
其余的看起来不错。