в основном методом, если я пишу это:Что произойдет, если я вызову метод run() самостоятельно?
Thread aThread = new Thread();
aThread.run();
что произойдет ???
в основном методом, если я пишу это:Что произойдет, если я вызову метод run() самостоятельно?
Thread aThread = new Thread();
aThread.run();
что произойдет ???
Он будет работать в текущий нить. Вы будете не начинайте новую тему таким образом.
Но это не имеет особого значения в вашем примере, так как вы дали новый Thread без кода для запуска в любом случае.
Нить, которая запускает код main()
, является текущей нитью. Создание объекта Thread
и вызов одного из его методов (кроме start()
) аналогичны вызову метода класса Integer
или String
- он не создает новую актуальную нить.
В вашем примере кода выполнение основного метода будет продолжаться только при завершении работы метода run()
. Это означает, что если метод run()
имеет бесконечный цикл (предположим, что он ожидает входящих запросов), то метод main()
никогда не будет продолжать работать, даже если после вызова run()
больше строк кода.
Вызов aThread.start()
создает новый фактический поток (представленный объектом aThread
), делает новую нить вызвать метод run()
и возвращает выполнение исходного потока в следующую строку в main()
. Это означает, что новый поток может работать в кругах навсегда, но он не останавливает код main()
от создания большего количества потоков или выполнения других задач.
Он будет работать, как вы называете обычный метод. Таким образом, метод будет работать в том же потоке, который вызывает метод.
Если вы вызываете метод start в классе Thread, метод start будет возвращаться через некоторое время, но при параллелизме будет выполняться содержимое run-метода. Если вы вызываете метод run непосредственно, он будет выполнен и возвращен вызывающему, после того как метод будет полностью выполнен - как и любой обычный вызов метода.
Он будет работать в текущей теме не в новой теме Так что если вы вызываете метод run самостоятельно, это бессмысленно. Потому что он не создает новую тему.
Что такое текущая тема здесь? – Johanna
Основной поток, выполняющий метод main(). –