2009-08-12 3 views

ответ

10

Он будет работать в текущий нить. Вы будете не начинайте новую тему таким образом.

Но это не имеет особого значения в вашем примере, так как вы дали новый Thread без кода для запуска в любом случае.

+0

Что такое текущая тема здесь? – Johanna

+1

Основной поток, выполняющий метод main(). –

3

Нить, которая запускает код main(), является текущей нитью. Создание объекта Thread и вызов одного из его методов (кроме start()) аналогичны вызову метода класса Integer или String - он не создает новую актуальную нить.

В вашем примере кода выполнение основного метода будет продолжаться только при завершении работы метода run(). Это означает, что если метод run() имеет бесконечный цикл (предположим, что он ожидает входящих запросов), то метод main() никогда не будет продолжать работать, даже если после вызова run() больше строк кода.

Вызов aThread.start() создает новый фактический поток (представленный объектом aThread), делает новую нить вызвать метод run() и возвращает выполнение исходного потока в следующую строку в main(). Это означает, что новый поток может работать в кругах навсегда, но он не останавливает код main() от создания большего количества потоков или выполнения других задач.

3

Он будет работать, как вы называете обычный метод. Таким образом, метод будет работать в том же потоке, который вызывает метод.

0

Если вы вызываете метод start в классе Thread, метод start будет возвращаться через некоторое время, но при параллелизме будет выполняться содержимое run-метода. Если вы вызываете метод run непосредственно, он будет выполнен и возвращен вызывающему, после того как метод будет полностью выполнен - ​​как и любой обычный вызов метода.

1

Он будет работать в текущей теме не в новой теме Так что если вы вызываете метод run самостоятельно, это бессмысленно. Потому что он не создает новую тему.