Sobes.tech
Junior — Middle

Care este diferența dintre apelarea metodei run și utilizarea metodei start atunci când lucrați cu interfața Runnable?

sobes.tech AI

Răspuns de la 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();