Spec-Zone.ru › OpenJDK 24

Класс Executors

java.lang.Object
java.util.concurrent.Executors
public class Executors extends Object
Методы-фабрики и вспомогательные методы для классов Executor, ExecutorService, ScheduledExecutorService, ThreadFactory и Callable, определённых в этом пакете. Данный класс поддерживает следующие виды методов:
  • Методы, создающие и возвращающие ExecutorService с полезными настройками конфигурации.
  • Методы, создающие и возвращающие ScheduledExecutorService с полезными настройками конфигурации.
  • Методы, создающие и возвращающие «обёрнутый» ExecutorService, который отключает переконфигурацию, делая недоступными методы, специфичные для реализации.
  • Методы, создающие и возвращающие ThreadFactory, которые устанавливают созданные потоки в известное состояние.
  • Методы, создающие и возвращающие Callable из других форм, похожих на замыкания, чтобы их можно было использовать в методах выполнения, требующих Callable.
С:
1.5

Краткое описание методов

Модификатор и тип Метод Описание
static Callable<Object> callable(Runnable task)
Возвращает объект Callable, который при вызове выполняет заданную задачу и возвращает null.
static <T> Callable<T> callable(Runnable task, T result)
Возвращает объект Callable, который при вызове выполняет заданную задачу и возвращает заданный результат.
static Callable<Object> callable(PrivilegedAction<?> action)
Возвращает объект Callable, который при вызове выполняет заданный привилегированный оператор и возвращает его результат.
static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Возвращает объект Callable, который при вызове выполняет заданный привилегированный оператор обработки исключений и возвращает его результат.
static ThreadFactory defaultThreadFactory()
Возвращает по умолчанию фабрику потоков, используемую для создания новых потоков.
static ExecutorService newCachedThreadPool()
Создаёт пул потоков, создающий новые потоки по мере необходимости, но использующий ранее созданные потоки, когда они доступны.
static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
Создаёт пул потоков, создающий новые потоки по мере необходимости, но использующий ранее созданные потоки, когда они доступны, и использующий предоставленную ThreadFactory для создания новых потоков по мере необходимости.
static ExecutorService newFixedThreadPool(int nThreads)
Создаёт пул потоков, повторно использующий фиксированное количество потоков, работающих с общей неограниченной очередью.
static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
Создаёт пул потоков, повторно использующий фиксированное количество потоков, работающих с общей неограниченной очередью, используя предоставленную ThreadFactory для создания новых потоков по мере необходимости.
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
Создаёт пул потоков, который может планировать выполнение команд после заданной задержки или периодически.
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
Создаёт пул потоков, который может планировать выполнение команд после заданной задержки или периодически.
static ExecutorService newSingleThreadExecutor()
Создаёт Executor, использующий один рабочий поток, работающий с неограниченной очередью.
static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
Создаёт Executor, использующий один рабочий поток, работающий с неограниченной очередью, и использующий предоставленную ThreadFactory для создания нового потока по мере необходимости.
static ScheduledExecutorService newSingleThreadScheduledExecutor()
Создаёт однопоточный executor, который может планировать выполнение команд после заданной задержки или периодически.
static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
Создаёт однопоточный executor, который может планировать выполнение команд после заданной задержки или периодически.
static ExecutorService newThreadPerTaskExecutor(ThreadFactory threadFactory)
Создаёт Executor, который запускает новый поток для каждой задачи.
static ExecutorService newVirtualThreadPerTaskExecutor()
Создаёт Executor, который запускает новый виртуальный поток для каждой задачи.
static ExecutorService newWorkStealingPool()
Создаёт пул потоков с кражей задач, используя количество доступных процессоров в качестве целевого уровня параллелизма.
static ExecutorService newWorkStealingPool(int parallelism)
Создаёт пул потоков, который поддерживает достаточное количество потоков для поддержки заданного уровня параллелизма и может использовать несколько очередей для снижения конкуренции.
static <T> Callable<T> privilegedCallable(Callable<T> callable)
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод изначально возвращал объект Callable, который при вызове выполнял заданный callable в текущем контексте управления доступом.
static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод изначально возвращал объект Callable, который при вызове выполнял заданный callable в текущем контексте управления доступом, с текущим загрузчиком классов контекста как загрузчиком классов контекста.
static ThreadFactory privilegedThreadFactory()
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот метод изначально возвращал фабрику потоков, которая создавала новые потоки, имеющие тот же контекст управления доступом, что и текущий поток.
static ExecutorService unconfigurableExecutorService(ExecutorService executor)
Возвращает объект, который делегирует все определённые методы ExecutorService заданному исполнителю, но не любые другие методы, которые могли бы быть доступны с использованием приведений типов.
static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
Возвращает объект, который делегирует все определённые методы ScheduledExecutorService заданному исполнителю, но не любые другие методы, которые могли бы быть доступны с использованием приведений типов.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads)
Создаёт пул потоков, который повторно использует фиксированное количество потоков, работающих с общей неограниченной очередью. В любой момент времени не более nThreads потоков будут активны, обрабатывая задачи. Если дополнительные задачи отправляются, когда все потоки активны, они будут ожидать в очереди, пока освободится поток. Если какой-либо поток завершается из-за сбоя во время выполнения до завершения работы, новый поток займёт его место при необходимости для выполнения последующих задач. Потоки в пуле будут существовать до тех пор, пока явно не будет выполнен shutdown.
Параметры:
nThreads - количество потоков в пуле
Возвращает:
новый созданный пул потоков
Исключения:
IllegalArgumentException - если nThreads <= 0

newWorkStealingPool

public static ExecutorService newWorkStealingPool(int parallelism)
Создаёт пул потоков, который поддерживает достаточное количество потоков для заданного уровня параллелизма и может использовать несколько очередей для уменьшения конфликтов. Уровень параллелизма соответствует максимальному количеству потоков, активно участвующих в обработке задач или доступных для их обработки. Фактическое количество потоков может динамически увеличиваться и уменьшаться. Пул с воровством работ не даёт гарантий о порядке выполнения отправленных задач.
Параметры:
parallelism - целевой уровень параллелизма
Возвращает:
новый созданный пул потоков
Исключения:
IllegalArgumentException - если parallelism <= 0
С:
1.8

newWorkStealingPool

public static ExecutorService newWorkStealingPool()
Создаёт пул потоков с воровством работ, используя количество доступных процессоров в качестве целевого уровня параллелизма.
Возвращает:
новый созданный пул потоков
С:
1.8
См. также:
  • newWorkStealingPool(int)

newFixedThreadPool

public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
Создаёт пул потоков, который повторно использует фиксированное количество потоков, работающих с общей неограниченной очередью, используя предоставленный ThreadFactory для создания новых потоков при необходимости. В любой момент времени не более nThreads потоков будут активны, обрабатывая задачи. Если дополнительные задачи отправляются, когда все потоки активны, они будут ожидать в очереди, пока освободится поток. Если какой-либо поток завершается из-за сбоя во время выполнения до завершения работы, новый поток займёт его место при необходимости для выполнения последующих задач. Потоки в пуле будут существовать до тех пор, пока явно не будет выполнен shutdown.
Параметры:
nThreads - количество потоков в пуле
threadFactory - фабрика, используемая при создании новых потоков
Возвращает:
новый созданный пул потоков
Исключения:
NullPointerException - если threadFactory равно null
IllegalArgumentException - если nThreads <= 0

newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor()
Создаёт Executor, использующий один рабочий поток, работающий с неограниченной очередью. (Заметьте, однако, что если этот единственный поток завершается из-за сбоя во время выполнения до завершения работы, новый займёт его место при необходимости для выполнения последующих задач.) Задачи гарантированно выполняются последовательно, и не более одной задачи активна в любой момент времени. В отличие от в противном случае эквивалентного newFixedThreadPool(1), возвращаемый executor гарантированно не может быть переконфигурирован для использования дополнительных потоков.
Возвращает:
новый созданный однопоточный Executor

newSingleThreadExecutor

public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
Создаёт Executor, использующий один рабочий поток, работающий с неограниченной очередью, и использующий предоставленный ThreadFactory для создания нового потока при необходимости. В отличие от в противном случае эквивалентного newFixedThreadPool(1, threadFactory), возвращаемый executor гарантированно не может быть переконфигурирован для использования дополнительных потоков.
Параметры:
threadFactory - фабрика, используемая при создании новых потоков
Возвращает:
новый созданный однопоточный Executor
Исключения:
NullPointerException - если threadFactory равно null

newCachedThreadPool

public static ExecutorService newCachedThreadPool()
Создаёт пул потоков, который создаёт новые потоки по мере необходимости, но повторно использует ранее созданные потоки, когда они доступны. Эти пулы обычно улучшают производительность программ, выполняющих много кратковременных асинхронных задач. Вызовы execute будут повторно использовать ранее созданные потоки, если они доступны. Если ни один существующий поток не доступен, новый поток будет создан и добавлен в пул. Потоки, не использовавшиеся в течение шестидесяти секунд, завершаются и удаляются из кэша. Таким образом, пул, который остаётся неактивным достаточно долго, не будет потреблять ресурсы. Обратите внимание, что пулы с аналогичными свойствами, но разными деталями (например, параметрами таймаута) можно создать, используя конструкторы ThreadPoolExecutor.
Возвращает:
новый созданный пул потоков

newCachedThreadPool

public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
Создаёт пул потоков, который создаёт новые потоки по мере необходимости, но повторно использует ранее созданные потоки, когда они доступны, и использует предоставленный ThreadFactory для создания новых потоков при необходимости.
Параметры:
threadFactory - фабрика, используемая при создании новых потоков
Возвращает:
новый созданный пул потоков
Исключения:
NullPointerException - если threadFactory равно null

newThreadPerTaskExecutor

public static ExecutorService newThreadPerTaskExecutor(ThreadFactory threadFactory)
Создаёт Executor, который запускает новый поток для каждой задачи. Количество потоков, создаваемых Executor, неограничено.

Вызов cancel(true) на Future, представляющем ожидаемый результат задачи, отправленной в Executor, interrupt поток, выполняющий задачу.

Параметры:
threadFactory - фабрика, используемая при создании новых потоков
Возвращает:
новый executor, который создаёт новый поток для каждой задачи
Исключения:
NullPointerException - если threadFactory равно null
С:
21

newVirtualThreadPerTaskExecutor

public static ExecutorService newVirtualThreadPerTaskExecutor()
Создаёт Executor, который запускает новый виртуальный поток для каждой задачи. Количество потоков, создаваемых Executor, неограничено.

Этот метод эквивалентен вызову newThreadPerTaskExecutor(ThreadFactory) с фабрикой потоков, которая создаёт виртуальные потоки.

Возвращает:
новый executor, который создаёт новый виртуальный поток для каждой задачи
С:
21

newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor()
Создаёт однопоточный executor, который может планировать выполнение команд после заданной задержки или выполнять их периодически. (Однако обратите внимание, что если этот единственный поток завершается из-за сбоя во время выполнения до завершения работы, новый займёт его место при необходимости для выполнения последующих задач.) Задачи гарантированно выполняются последовательно, и не более одной задачи активна в любой момент времени. В отличие от в противном случае эквивалентного newScheduledThreadPool(1), возвращаемый executor гарантированно не может быть переконфигурирован для использования дополнительных потоков.
Возвращает:
новый созданный запланированный executor

newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
Создаёт однопоточный executor, который может планировать выполнение команд после заданной задержки или выполнять их периодически. (Однако обратите внимание, что если этот единственный поток завершается из-за сбоя во время выполнения до завершения работы, новый займёт его место при необходимости для выполнения последующих задач.) Задачи гарантированно выполняются последовательно, и не более одной задачи активна в любой момент времени. В отличие от в противном случае эквивалентного newScheduledThreadPool(1, threadFactory), возвращаемый executor гарантированно не может быть переконфигурирован для использования дополнительных потоков.
Параметры:
threadFactory - фабрика, используемая при создании новых потоков
Возвращает:
новый созданный запланированный executor
Исключения:
NullPointerException - если threadFactory равно null

newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
Создаёт пул потоков, который может планировать выполнение команд после заданной задержки или выполнять их периодически.
Параметры:
corePoolSize - количество потоков, которые нужно сохранить в пуле, даже если они бездействуют
Возвращает:
новый созданный запланированный пул потоков
Исключения:
IllegalArgumentException - если corePoolSize < 0

newScheduledThreadPool

public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
Создаёт пул потоков, который может планировать выполнение команд после заданной задержки или периодически.
Параметры:
corePoolSize - количество потоков в пуле, которые будут поддерживаться, даже если они простаивают
threadFactory - фабрика, используемая при создании нового потока исполнителем
Возвращает:
новый созданный планируемый пул потоков
Выбрасывает:
IllegalArgumentException - если corePoolSize < 0
NullPointerException - если threadFactory равно null

unconfigurableExecutorService

public static ExecutorService unconfigurableExecutorService(ExecutorService executor)
Возвращает объект, делегирующий все определённые методы ExecutorService заданному исполнителю, но не любые другие методы, которые могут быть доступны с помощью приведения типов. Это предоставляет способ безопасно "заморозить" конфигурацию и запретить настройку заданной конкретной реализации.
Параметры:
executor - основная реализация
Возвращает:
объект типа ExecutorService
Выбрасывает:
NullPointerException - если executor равно null

unconfigurableScheduledExecutorService

public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
Возвращает объект, делегирующий все определённые методы ScheduledExecutorService заданному исполнителю, но не любые другие методы, которые могут быть доступны с помощью приведения типов. Это предоставляет способ безопасно "заморозить" конфигурацию и запретить настройку заданной конкретной реализации.
Параметры:
executor - основная реализация
Возвращает:
объект типа ScheduledExecutorService
Выбрасывает:
NullPointerException - если executor равно null

defaultThreadFactory

public static ThreadFactory defaultThreadFactory()
Возвращает стандартную фабрику потоков, используемую для создания новых потоков. Эта фабрика создаёт все новые потоки, используемые Executor'ом, в той же ThreadGroup. Она использует группу потоков, вызывающих этот метод defaultThreadFactory. Каждый новый поток создаётся как не-демон-поток с приоритетом, равным меньшему значению между Thread.NORM_PRIORITY и максимальным приоритетом, разрешённым в группе потоков. Имена новых потоков доступны через Thread.getName() и имеют вид pool-N-thread-M, где N — порядковый номер этой фабрики, а M — порядковый номер созданного потока.
Возвращает:
объект фабрики потоков

privilegedThreadFactory

@Deprecated(since="17", forRemoval=true) public static ThreadFactory privilegedThreadFactory()
Устарело, для удаления: Этот элемент API может быть удалён в будущей версии.
Этот метод первоначально возвращал фабрику потоков, создающую новые потоки с тем же контекстом управления доступом, что и текущий поток. Контексты управления доступом были полезны только в сочетании с Менеджером безопасности, который больше не поддерживается. Нет замены для Менеджера безопасности или этого метода.
Возвращает фабрику потоков, используемую для создания новых потоков с текущим загрузчиком классов контекста. Эта фабрика создаёт потоки с теми же настройками, что и defaultThreadFactory(), дополнительно устанавливая загрузчик классов контекста новых потоков в соответствие загрузчику текущего вызвавшего этот метод privilegedThreadFactory потока.

Обратите внимание, что, хотя задачи, выполняемые в таких потоках, будут иметь тот же загрузчик классов, что и текущий поток, у них могут быть разные значения ThreadLocal или InheritableThreadLocal. При необходимости, конкретные значения локальных переменных потоков можно установить или сбросить перед запуском любой задачи в подклассах ThreadPoolExecutor с помощью ThreadPoolExecutor.beforeExecute(Thread, Runnable). Кроме того, если необходимо инициализировать рабочие потоки с теми же настройками InheritableThreadLocal, что и у какого-либо другого заданного потока, вы можете создать собственную ThreadFactory, в которой этот поток ожидает и обслуживает запросы на создание других потоков, которые унаследуют его значения.

Возвращает:
объект фабрики потоков

callable

public static <T> Callable<T> callable(Runnable task, T result)
Возвращает объект Callable, который, при вызове, выполняет заданную задачу и возвращает заданный результат. Это может быть полезно при применении методов, требующих Callable к действиям, которые в противном случае не возвращают результат.
Тип параметров:
T - тип результата
Параметры:
task - задача для выполнения
result - результат для возврата
Возвращает:
объект callable
Выбрасывает:
NullPointerException - если task равно null

callable

public static Callable<Object> callable(Runnable task)
Возвращает объект Callable, который, при вызове, выполняет заданную задачу и возвращает null.
Параметры:
task - задача для выполнения
Возвращает:
объект callable
Выбрасывает:
NullPointerException - если task равно null

callable

public static Callable<Object> callable(PrivilegedAction<?> action)
Возвращает объект Callable, который, при вызове, выполняет заданное действие с привилегиями и возвращает его результат.
Параметры:
action - действие с привилегиями для выполнения
Возвращает:
объект callable
Выбрасывает:
NullPointerException - если action равно null

callable

public static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Возвращает объект Callable, который, при вызове, выполняет заданное действие с обработкой исключений и возвращает его результат.
Параметры:
action - действие с обработкой исключений для выполнения
Возвращает:
объект callable
Выбрасывает:
NullPointerException - если action равно null

privilegedCallable

@Deprecated(since="17", forRemoval=true) public static <T> Callable<T> privilegedCallable(Callable<T> callable)
Устарело, для удаления: Этот элемент API может быть удалён в будущей версии.
Этот метод первоначально возвращал объект Callable, который, при вызове, выполнял данное callable в текущем контексте управления доступом. Контексты управления доступом были полезны только в сочетании с Менеджером безопасности, который больше не поддерживается. Нет замены для Менеджера безопасности или этого метода.
Возвращает объект Callable, который, при вызове, выполняет заданное callable и возвращает его результат.
Тип параметров:
T - тип результата callable
Параметры:
callable - основная задача
Возвращает:
объект callable
Выбрасывает:
NullPointerException - если callable равно null

privilegedCallableUsingCurrentClassLoader

@Deprecated(since="17", forRemoval=true) public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
Устарело, для удаления: Этот элемент API может быть удалён в будущей версии.
Этот метод первоначально возвращал объект Callable, который, при вызове, выполнял заданное callable в текущем контексте управления доступом с текущим загрузчиком классов контекста в качестве загрузчика. Контексты управления доступом были полезны только в сочетании с Менеджером безопасности, который больше не поддерживается. Нет замены для Менеджера безопасности или этого метода.
Возвращает объект Callable, который, при вызове, выполнит заданное callable с текущим загрузчиком классов контекста в качестве загрузчика.
Тип параметров:
T - тип результата callable
Параметры:
callable - основная задача
Возвращает:
объект callable
Выбрасывает:
NullPointerException - если callable равно null

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/Executors.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API