Spec-Zone.ru › OpenJDK 25

Класс 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()
Создает Executor, использующий один рабочий поток с неограниченной очередью.
static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
Создает Executor, использующий один рабочий поток с неограниченной очередью и использующий предоставленную ThreadFactory для создания нового потока при необходимости.
static ScheduledExecutorService newSingleThreadScheduledExecutor()
Создает однопоточный исполнитель, который может планировать выполнение команд с заданной задержкой или периодически.
static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
Создает однопоточный исполнитель, который может планировать выполнение команд с заданной задержкой или периодически.
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 указанному исполнителю, но не любые другие методы, которые могли бы быть доступны посредством приведения типов.

Методы, объявленные в классе 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, запускающий новый 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 — базовая реализация
Возвращает:
экземпляр 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(), дополнительно задавая contextClassLoader новых потоков равным 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/Executors.html

Spec-Zone.ru

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