Задачу решила, но логику вывода понять не могу. Вывод: Horse_09 has finished the race! Horse_03 has finished the race! Horse_02 has finished the race! Horse_01 has finished the race! Horse_04 has finished the race! Horse_08 has finished the race! Waiting forHorse_05 Horse_05 has finished the race! Waiting forHorse_06 Horse_07 has finished the race! Horse_10 has finished the race! Horse_06 has finished the race! В коде есть такая часть: for (Horse hrs : horses) { if (hrs.isFinished() == false) { System.out.println("Waiting for " + hrs.getName()); hrs.join(); То есть, если лошадь не финишировала, мы ее ждём, а потом двигаемся к следующей. Тогда почему после вывода на экран "Waiting forHorse_06" следующая строка не "Horse_06 has finished the race!". Ведь метод join заставляет нас выполнять только одну нить, как успела вывестись надпись "Horse_07 has finished the race! Horse_10 has finished the race!"?