Я собираюсь предполагать , что Racer extends Thread
, и я собираюсь предположить, что вы хотите знать, почему метод run()
в вашем первом фрагменте кода возвращается немедленно, независимо от того, как долго ваш Racers
сон.
Этот ответ будет действительным, только если мои два предположения верны. Вы можете отредактировать свой вопрос и показать больше своего кода, если я ошибаюсь.
Внутри этого «основного» * 1011 * метода у вас есть al oop:
for(Racer racer : racers) {
racer.start();
finished_racers.add(racer);
}
Этот l oop запускает каждый Racer
(который я предполагаю как поток), а затем добавляет Racer
в список finished_racers
, как только запускается гонщик . *
Что значит «закончено»? Почему гонщик «финиширует» именно в тот момент, когда он стартовал?
Я не знаю, что здесь происходит на самом деле, потому что вы не показали весь свой код и не дали полное описание того, что вы ожидаете от кода или того, что он делает не так, как вы ожидали. Но я надеюсь, что этот «ответ» поможет.
* На самом деле, он может добавить Racer
в список finished_racers
даже до того, как будет запущен Racer
. Когда вы вызываете t.start()
для некоторого потока t
, нет гарантии, что поток действительно начнет выполнение вашего кода до того, как вызов start()
вернется.