Junior — Middle
Kāda ir atšķirība starp run metodes izsaukšanu un start metodes izmantošanu, strādājot ar Runnable saskarni?
sobes.tech AI
Atbilde no AI
Метод run() интерфейса Runnable содержит код, который должен выполняться в отдельном потоке, но вызов run() напрямую — это обычный вызов метода в текущем потоке, без создания нового потока.
Метод start() класса Thread создает новый поток и вызывает внутри него метод run(). Таким образом, чтобы запустить код в новом потоке, нужно создать объект Thread, передать ему Runnable и вызвать start(), а не run() напрямую.
Пример:
Runnable task = () -> System.out.println("Выполняется в потоке " + Thread.currentThread().getName());
// Вызов run() напрямую — выполняется в текущем потоке
task.run();
// Запуск в новом потоке
Thread thread = new Thread(task);
thread.start();