Класс 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) | Возвращает объект |
static <T> Callable<T> | callable(Runnable task,
T result) | Возвращает объект |
static Callable<Object> | callable(PrivilegedAction<?> action) | Возвращает объект |
static Callable<Object> | callable(PrivilegedExceptionAction<?> 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 | newWorkStealingPool() | Создаёт пул потоков с кражей работы, используя количество доступных процессоров в качестве целевого уровня параллелизма. |
static ExecutorService | newWorkStealingPool(int parallelism) | Создаёт пул потоков, который поддерживает достаточное количество потоков для заданного уровня параллелизма и может использовать несколько очередей для уменьшения конкуренции. |
static <T> Callable<T> | privilegedCallable(Callable<T> callable) | Возвращает объект |
static <T> Callable<T> | privilegedCallableUsingCurrentClassLoader(Callable<T> callable) | Возвращает объект |
static ThreadFactory | privilegedThreadFactory() | Возвращает фабрику потоков, используемую для создания новых потоков, имеющих те же разрешения, что и текущий поток. |
static ExecutorService | unconfigurableExecutorService(ExecutorService executor) | Возвращает объект, который делегирует все определённые методы |
static ScheduledExecutorService | unconfigurableScheduledExecutorService(ScheduledExecutorService executor) | Возвращает объект, который делегирует все определённые методы |
Методы, объявленные в классе 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
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. Если есть SecurityManager, она использует группу System.getSecurityManager(), иначе группу потока, вызывающего этот defaultThreadFactory метод. Каждый новый поток создаётся как не-демон-поток с приоритетом, установленным как меньшее из Thread.NORM_PRIORITY и максимальный приоритет, разрешённый в группе потоков. У новых потоков есть имена, доступные через Thread.getName() pool-N-thread-M, где N - порядковый номер этой фабрики, а M - порядковый номер потока, созданного этой фабрикой.
- Возвращает:
- фабрика потоков
privilegedThreadFactory
public static ThreadFactory privilegedThreadFactory()
Возвращает фабрику потоков, используемую для создания новых потоков с теми же правами, что и у текущего потока. Эта фабрика создаёт потоки с теми же настройками, что и defaultThreadFactory(), дополнительно устанавливая AccessControlContext и contextClassLoader новых потоков такими же, как у потока, вызвавшего этот privilegedThreadFactory метод. Новый privilegedThreadFactory может быть создан в рамках действия AccessController.doPrivileged, устанавливающего контекст управления доступом текущего потока для создания потоков с выбранными настройками прав, действующими в рамках этого действия.
Обратите внимание, что, хотя задачи, выполняемые в таких потоках, будут иметь те же настройки управления доступом и загрузчика классов, что и текущий поток, у них могут быть иные значения ThreadLocal или InheritableThreadLocal. При необходимости, конкретные значения локальных переменных потоков могут быть установлены или сброшены перед выполнением любой задачи в подклассах ThreadPoolExecutor с помощью ThreadPoolExecutor.beforeExecute(Thread, Runnable). Также, если необходимо инициализировать потоки-рабочие с теми же настройками InheritableThreadLocal, что и какой-то другой выделенный поток, можно создать пользовательскую фабрику потоков, в которой этот поток ожидает и обрабатывает запросы на создание других потоков, которые унаследуют его значения.
- Возвращает:
- фабрику потоков
- Исключения:
-
AccessControlException- если текущий контекст управления доступом не имеет разрешения на получение и установку загрузчика контекста класса
callable
public static <T> Callable<T> callable(Runnable task,
T result) Возвращает объект Callable, который, при вызове, выполняет заданную задачу и возвращает заданный результат. Это может быть полезно при применении методов, требующих Callable к действию, не имеющему результата.
- Типы параметров:
-
T- тип результата - Параметры:
-
task- задача для выполнения -
result- результат, который нужно вернуть - Возвращает:
- объект callable
- Исключения:
-
NullPointerException- если задача null
callable
public static Callable<Object> callable(Runnable task)
Возвращает объект Callable, который, при вызове, выполняет заданную задачу и возвращает null.
- Параметры:
-
task- задача для выполнения - Возвращает:
- объект callable
- Исключения:
-
NullPointerException- если задача null
callable
public static Callable<Object> callable(PrivilegedAction<?> action)
Возвращает объект Callable, который, при вызове, выполняет заданное привилегированное действие и возвращает его результат.
- Параметры:
-
action- привилегированное действие для выполнения - Возвращает:
- объект callable
- Исключения:
-
NullPointerException- если действие null
callable
public static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Возвращает объект Callable, который, при вызове, выполняет заданное привилегированное действие с обработкой исключений и возвращает его результат.
- Параметры:
-
action- привилегированное действие с обработкой исключений для выполнения - Возвращает:
- объект callable
- Исключения:
-
NullPointerException- если действие null
privilegedCallable
public static <T> Callable<T> privilegedCallable(Callable<T> callable)
Возвращает объект Callable, который, при вызове, выполнит заданное callable в текущем контексте управления доступом. Этот метод обычно следует вызывать в рамках действия AccessController.doPrivileged для создания callable, которые, если возможно, будут выполняться с выбранными настройками прав в рамках этого действия; в противном случае, бросит связанное исключение AccessControlException.
- Типы параметров:
-
T- тип результата callable - Параметры:
-
callable- основная задача - Возвращает:
- объект callable
- Исключения:
-
NullPointerException- если callable null
privilegedCallableUsingCurrentClassLoader
public static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)
Возвращает объект Callable, который, при вызове, выполнит заданное callable в текущем контексте управления доступом, с текущим загрузчиком контекста классов в качестве загрузчика контекста классов. Этот метод обычно следует вызывать в рамках действия AccessController.doPrivileged для создания callable, которые, если возможно, будут выполняться с выбранными настройками прав в рамках этого действия; в противном случае, бросит связанное исключение AccessControlException.
- Типы параметров:
-
T- тип результата callable - Параметры:
-
callable- основная задача - Возвращает:
- объект callable
- Исключения:
-
NullPointerException- если callable null -
AccessControlException- если текущий контекст управления доступом не имеет разрешения на установку и получение загрузчика контекста класса
© 1993, 2020, 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/11/docs/api/java.base/java/util/concurrent/Executors.html