В моей программе я создаю несколько потоков в методе main(). Последняя строка в основном методе - это вызов System.out.println(), который я не хочу вызывать до тех пор, пока все потоки не погибнут. Я попытался вызывать Thread.join() для каждого потока, но блокирует каждый поток так, чтобы они выполнялись последовательно, а не параллельно.
Есть ли способ заблокировать поток main(), пока все остальные потоки не закончатся? Вот соответствующая часть моего кода:
public static void main(String[] args) {
//some other initialization code
//Make array of Thread objects
Thread[] racecars = new Thread[numberOfRaceCars];
//Fill array with RaceCar objects
for(int i=0; i<numberOfRaceCars; i++) {
racecars[i] = new RaceCar(laps, args[i]);
}
//Call start() on each Thread
for(int i=0; i<numberOfRaceCars; i++) {
racecars[i].start();
try {
racecars[i].join(); //This is where I tried to using join()
//It just blocks all other threads until the current
//thread finishes.
} catch(InterruptedException e) {
e.printStackTrace();
}
}
//This is the line I want to execute after all other Threads have finished
System.out.println("It Over!");
}
Спасибо за помощь ребятам!
Эрик