Метод run
Метод run является единственным абстрактным методом функционального интерфейса Runnable. Он определяет задачу, которая должна быть выполнена в отдельном потоке. Когда вы передаете объект Runnable в конструктор класса Thread и вызываете метод start, виртуальная машина Java создает новый поток и автоматически вызывает в нем метод run. Метод не принимает параметров и не возвращает значения. Если вызвать метод run напрямую, без создания потока, код выполнится в текущем потоке, как обычный вызов метода.
Синтаксис
public void run()
Пример
Давайте создадим класс, реализующий интерфейс Runnable, и запустим его в отдельном потоке:
public class Main
{
public static void main(String[] args)
{
Runnable task = new Runnable()
{
@Override
public void run()
{
System.out.println("Hello from new thread");
}
};
Thread thread = new Thread(task);
thread.start();
}
}
Результат выполнения кода:
"Hello from new thread"
Пример
Давайте используем лямбда-выражение для реализации метода run и выведем числа от 1 до 5:
public class Main
{
public static void main(String[] args)
{
Runnable task = () -> {
for (int i = 1; i <= 5; i++)
{
System.out.println(i);
}
};
Thread thread = new Thread(task);
thread.start();
}
}
Результат выполнения кода:
1
2
3
4
5
Пример
Давайте вызовем метод run напрямую, без создания нового потока, и убедимся, что код выполняется в главном потоке:
public class Main
{
public static void main(String[] args)
{
Runnable task = () -> {
System.out.println(Thread.currentThread().getName());
};
task.run();
}
}
Результат выполнения кода:
"main"