Господа, помогите ламмеру разобраться в потоках!
Задача: в цикле создается n потоков и запускаются. После цикла нужно подождать пока они все выполнятся.
У меня получился вот такой код:
List<Thread> threads = new ArrayList<>();
for(int i = 0; i < 10; i++){
Thread thread = new Thread(new Calculate());
thread.start();
threads.add(thread);
}
for(Thread thread : threads){
thread.join();
}
Правильно ли он написан? Смущает фраза из книги по Java что-то типа "Join присоединяет поток к родительскому потоку, и родительский поток не будет завершен до тех пор пока не будут завершено все приджойненные потоки"
С одной стороны вроде join ожидает завершение потока, с другой стороны, судя по словам из книги, он не ждет завершения потока, и идет дальше, всего лишь заставляя главный поток не завершаться до тех пор пока не выполнены приджойненные потоки.
Подскажите, как это работает на самом деле?