Так что скажите, что у меня есть 10 вещей для запуска, но у меня есть только три потока, которые запускаются за раз.Как дождаться окончания потока, прежде чем запускать больше в 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 –
Ну, это просто ошибка: удалите весь метод соединения: – xtraclass
Если вы еще не начали нить, вы, вероятно, не хочу дождаться, когда он присоединится. 't.start()' then 't.join()'. – StoneBird