Spec-Zone.ru › OpenJDK 21

Класс Executors

java.lang.Object
java.util.concurrent.Executors
public class Executors extends Object
Методы-фабрики и вспомогательные методы для классов Executor, ExecutorService, ScheduledExecutorService, ThreadFactory и Callable, определённых в этом пакете. Этот класс поддерживает следующие типы методов:
  • Методы, которые создают и возвращают ExecutorService с полезными конфигурационными настройками.
  • Методы, которые создают и возвращают ScheduledExecutorService с полезными конфигурационными настройками.
  • Методы, которые создают и возвращают «обёрнутый» ExecutorService, который отключает переконфигурацию, делая недоступными методы, специфичные для реализации.
  • Методы, которые создают и возвращают ThreadFactory, устанавливающие новые созданные потоки в известное состояние.
  • Методы, которые создают и возвращают Callable из других форм, похожих на замыкания, чтобы их можно было использовать в методах выполнения, требующих Callable.
Since:
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, который, при вызове, выполняет заданный привилегированный action и возвращает его результат.
static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Возвращает объект Callable, который, при вызове, выполняет заданный привилегированный action, обрабатывающий исключения, и возвращает его результат.
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 может быть удалён в будущей версии.
Этот метод полезен только в сочетании с Security Manager, который устарел и может быть удалён в будущей версии.
static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии.
Этот метод полезен только в сочетании с Security Manager, который устарел и может быть удалён в будущей версии.
static ThreadFactory privilegedThreadFactory()
Устаревший, подлежит удалению: Этот элемент API может быть удалён в будущей версии.
Этот метод полезен только в сочетании с Security Manager, который устарел и может быть удалён в будущей версии.
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 не может быть переконфигурирован для использования дополнительных потоков.
Возвращает:
новый созданный планировщик задач

newSingleThreadScheduledExecutor

public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
Создаёт однопоточный executor, который может планировать выполнение команд после заданной задержки или периодически. (Обратите внимание, что если этот единственный поток завершится из-за ошибки во время выполнения до завершения, новый займёт его место при необходимости для выполнения последующих задач.) Задачи гарантированно выполняются последовательно, и не более одной задачи активна в любой момент времени. В отличие от newScheduledThreadPool(1, threadFactory), возвращаемый executor не может быть переконфигурирован для использования дополнительных потоков.
Параметры:
threadFactory - фабрика для использования при создании новых потоков
Возвращает:
новый созданный планировщик задач
Исключения:
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 методы заданному исполнителю, но не другие методы, которые могут быть доступны с помощью приведений типов. Это обеспечивает возможность безопасно "заморозить" конфигурацию и запретить настройку заданной конкретной реализации.
Parameters:
executor - основная реализация
Returns:
экземпляр ExecutorService
Throws:
NullPointerException - если исполнитель null

unconfigurableScheduledExecutorService

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

defaultThreadFactory

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

privilegedThreadFactory

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

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

Returns:
фабрика потоков
Throws:
AccessControlException - если текущий контекст управления доступом не имеет прав на получение и установку загрузчика контекста класса

callable

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

callable

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

callable

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

callable

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

privilegedCallable

@Deprecated(since="17", forRemoval=true) public static <T> Callable<T> privilegedCallable(Callable<T> callable)
Устарело, подлежит удалению: Этот элемент API может быть удалён в будущей версии.
Этот метод полезен только в сочетании с менеджером безопасности, который устарел и подлежит удалению в будущей версии. Вследствие этого, этот метод также устарел и подлежит удалению. Замены для менеджера безопасности или этого метода нет.
Возвращает объект Callable, который при вызове выполнит заданный callable в контексте текущего управления доступом. Этот метод обычно вызывается в рамках действия AccessController.doPrivileged для создания callable, который, если возможно, выполнится с выбранными настройками прав, действующими в рамках этого действия; или, если это невозможно, выбросит соответствующее AccessControlException.
Type Parameters:
T - тип результата callable
Parameters:
callable - основная задача
Returns:
объект callable
Throws:
NullPointerException - если callable null

privilegedCallableUsingCurrentClassLoader

@Deprecated(since="17", forRemoval=true) public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
Устарело, подлежит удалению: Этот элемент API может быть удалён в будущей версии.
Этот метод полезен только в сочетании с менеджером безопасности, который устарел и подлежит удалению в будущей версии. Вследствие этого, этот метод также устарел и подлежит удалению. Замены для менеджера безопасности или этого метода нет.
Возвращает объект Callable, который при вызове выполнит заданный callable в контексте текущего управления доступом, используя текущий загрузчик контекста классов в качестве загрузчика контекста классов. Этот метод обычно вызывается в рамках действия AccessController.doPrivileged для создания callable, который, если возможно, выполнится с выбранными настройками прав, действующими в рамках этого действия; или, если это невозможно, выбросит соответствующее AccessControlException.
Type Parameters:
T - тип результата callable
Parameters:
callable - основная задача
Returns:
объект callable
Throws:
NullPointerException - если callable null
AccessControlException - если текущий контекст управления доступом не имеет прав на установку и получение загрузчика контекста класса

© 1993, 2023, 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/21/docs/api/java.base/java/util/concurrent/Executors.html

Spec-Zone.ru

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