РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1063 of 1163 menu

Метод newSingleThreadExecutor

Метод newSingleThreadExecutor класса Executors создает исполнитель ExecutorService с одним рабочим потоком. Все задачи, переданные этому исполнителю, выполняются последовательно в том порядке, в котором они были отправлены. Если во время выполнения задачи поток завершается из-за исключения, исполнитель автоматически создает новый поток для продолжения работы с оставшимися задачами. Метод не принимает параметров и возвращает объект ExecutorService, готовый к принятию задач.

Синтаксис

Executors.newSingleThreadExecutor()

Пример

Давайте создадим однопоточный исполнитель и отправим ему несколько задач, чтобы убедиться в их последовательном выполнении:

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 1")); executor.execute(() -> System.out.println("task 2")); executor.execute(() -> System.out.println("task 3")); executor.shutdown(); } }

Результат выполнения кода:

task 1 task 2 task 3

Пример

Давайте отправим задачи через submit и получим результат их выполнения через объект Future:

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class Main { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); Future<Integer> future = executor.submit(() -> 1 + 2); Integer res = future.get(); System.out.println(res); executor.shutdown(); } }

Результат выполнения кода:

3

Пример

Давайте проверим, что все задачи выполняются в одном и том же потоке:

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(Thread.currentThread().getName())); executor.execute(() -> System.out.println(Thread.currentThread().getName())); executor.execute(() -> System.out.println(Thread.currentThread().getName())); executor.shutdown(); } }

Результат выполнения кода:

pool-1-thread-1 pool-1-thread-1 pool-1-thread-1

Смотрите также

  • класс ExecutorService,
    который представляет собой исполнитель задач
  • метод submit,
    который отправляет задачу на выполнение и возвращает Future
  • метод execute,
    который запускает задачу без возврата результата
  • метод shutdown,
    который корректно завершает работу исполнителя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить