这么说吧,我有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();


其余的看起来不错。

10-05 19:48