Вопрос проверяет понимание базового механизма многопоточности в Java.
Поток запускается через start(), который:
Создает новый поток ОС
Вызывает run() в новом потоке
Прямой вызов run() работает в текущем потоке, не создавая новый.
Правильный запуск:
Thread thread = new Thread(() -> {
System.out.println("Running in new thread");
});
thread.start(); // Создает новый потокПроблема вызова run():
thread.run(); // Выполнится в текущем потоке (main)Механизм start():
JVM создает нативный поток
Поток переходит в состояние Runnable
В новом потоке вызывается run()
После выполнения поток завершается