Когда ты вызываешь метод run() напрямую вместо использования start(), метод выполняется в текущем потоке вместо создания нового потока. Это разрушает смысл многопоточности.
Вызов метода start():
run() выполняется в этом новом потокеПрямой вызов метода run():
run() выполняется в главном потокеКогда ты вызываешь run() напрямую:
run()Thread thread = new Thread(() -> System.out.println("Hello"));
// Неправильно - выполняется в главном потоке
thread.run();
// Правильно - создаёт новый поток
thread.start();
Всегда используй метод start() для правильного запуска потока. Вызов start() заставляет JVM создать новый поток и вызвать run() уже в его контексте. Прямой вызов run() — частая ошибка, которая сводит на нет все преимущества многопоточности, и в production-коде её следует избегать.
Если вызвать run() напрямую на объекте Thread, метод выполнится в текущем потоке без создания нового потока.
Новый — ещё не проверен сообществом
Вы