Spec-Zone.ru › OpenJDK 27

Класс Executors

java.lang.Object
java.util.concurrent.Executors
public final 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()
Создаёт исполнитель, использующий один рабочий поток, работающий с неограниченной очередью.
static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
Создаёт исполнитель, использующий один рабочий поток, работающий с неограниченной очередью, и использующий предоставленный ThreadFactory для создания нового потока при необходимости.
static ScheduledExecutorService newSingleThreadScheduledExecutor()
Создаёт однопоточный исполнитель, который может планировать выполнение команд с заданной задержкой или их периодическое выполнение.
static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
Создаёт однопоточный исполнитель, который может планировать выполнение команд с заданной задержкой или их периодическое выполнение.
static ExecutorService newThreadPerTaskExecutor(ThreadFactory threadFactory)
Создаёт исполнитель, который запускает новый поток для каждой задачи.
static ExecutorService newVirtualThreadPerTaskExecutor()
Создаёт исполнитель, который запускает новый виртуальный поток для каждой задачи.
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 заданному исполнителю, но не какие-либо другие методы, которые иначе могли бы быть доступны посредством приведений типов.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

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, запускающий новый Thread для каждой задачи. Число потоков, создаваемых Executor, не ограничено.

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

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

newVirtualThreadPerTaskExecutor

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

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

Возвращает:
новый Executor, создающий новый виртуальный Thread для каждой задачи
С версии:
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 — фабрика, используемая Executor при создании нового потока
Возвращает:
созданный пул потоков с поддержкой планирования
Вызывает исключение:
IllegalArgumentException — если corePoolSize < 0
NullPointerException — если threadFactory равен null

unconfigurableExecutorService

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

unconfigurableScheduledExecutorService

public static ScheduledExecutorService unconfigurableScheduledExecutorService(ScheduledExecutorService executor)
Возвращает объект, делегирующий все определенные методы ScheduledExecutorService указанному Executor, но не любые другие методы, которые в противном случае могли бы быть доступны с помощью приведений типов. Это позволяет безопасно «зафиксировать» конфигурацию и запретить настройку конкретной реализации.
Параметры:
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(), дополнительно устанавливая для contextClassLoader новых потоков значение, совпадающее со значением у потока, вызвавшего этот метод 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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе документации Java SE, где приведены более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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