Метод execute
Метод execute класса ExecutorService
принимает задачу и запускает её на выполнение
в одном из потоков пула. В отличие от метода
submit, метод execute не возвращает
объект Future, поэтому узнать результат
выполнения или дождаться его завершения через
этот метод нельзя. В параметр метода мы передаём
объект, реализующий интерфейс Runnable.
Метод ничего не возвращает.
Синтаксис
executor.execute(command)
Пример
Давайте создадим пул из одного потока и запустим в нём задачу, которая выведет строку на экран:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main
{
public static void main(String[] args)
{
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(() -> {
System.out.println("task is running");
});
executor.shutdown();
}
}
Результат выполнения кода:
"task is running"
Пример
Давайте создадим пул из двух потоков и запустим в нём несколько задач. Каждая задача выведет своё имя:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main
{
public static void main(String[] args)
{
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.execute(() -> {
System.out.println("task 1");
});
executor.execute(() -> {
System.out.println("task 2");
});
executor.execute(() -> {
System.out.println("task 3");
});
executor.shutdown();
}
}
Результат выполнения кода:
"task 1"
"task 2"
"task 3"
Пример
Давайте передадим в метод execute задачу,
созданную через именованный класс, реализующий
интерфейс Runnable:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main
{
public static void main(String[] args)
{
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(new MyTask());
executor.shutdown();
}
}
class MyTask implements Runnable
{
@Override
public void run()
{
System.out.println("custom task is running");
}
}
Результат выполнения кода:
"custom task is running"
Смотрите также
-
метод
submit,
который запускает задачу и возвращает Future -
метод
shutdown,
который завершает работу пула потоков -
метод
awaitTermination,
который ожидает завершения всех задач -
класс
Executors,
который создаёт пулы потоков