Spec-Zone.ru › OpenJDK 17

Класс 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, который при вызове выполняет заданный привилегированный метод и возвращает его результат.
static Callable<Object> callable(PrivilegedExceptionAction<?> action)
Возвращает объект Callable, который при вызове выполняет заданный привилегированный метод обработки исключений и возвращает его результат.
static ThreadFactory defaultThreadFactory()
Возвращает по умолчанию фабрику потоков, используемую для создания новых потоков.
static ExecutorService newCachedThreadPool()
Создаёт пул потоков, который создаёт новые потоки по мере необходимости, но будет повторно использовать ранее созданные потоки, когда они доступны.
static ExecutorService newCachedThreadPool(ThreadFactory threadFactory)
Создаёт пул потоков, который создаёт новые потоки по мере необходимости, но будет повторно использовать ранее созданные потоки, когда они доступны, и использует предоставленную ThreadFactory для создания новых потоков по мере необходимости.
static ExecutorService newFixedThreadPool(int nThreads)
Создаёт пул потоков, который повторно использует фиксированное количество потоков, работающих с общей неограниченной очередью.
static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
Создаёт пул потоков, который повторно использует фиксированное количество потоков, работающих с общей неограниченной очередью, используя предоставленную ThreadFactory для создания новых потоков по мере необходимости.
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
Создаёт пул потоков, который может планировать выполнение команд после заданной задержки или периодически.
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
Создаёт пул потоков, который может планировать выполнение команд после заданной задержки или периодически.
static ExecutorService newSingleThreadExecutor()
Создаёт Executor, использующий один рабочий поток, работающий с неограниченной очередью.
static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory)
Создаёт Executor, использующий один рабочий поток, работающий с неограниченной очередью, и использует предоставленную ThreadFactory для создания нового потока по мере необходимости.
static ScheduledExecutorService newSingleThreadScheduledExecutor()
Создаёт однопоточный Executor, который может планировать выполнение команд после заданной задержки или периодически.
static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
Создаёт однопоточный Executor, который может планировать выполнение команд после заданной задержки или периодически.
static ExecutorService 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

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

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

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

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

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 в рамках текущего контекста управления доступом. Этот метод обычно следует вызывать в рамках AccessController.doPrivileged действия для создания callable, которое, если возможно, выполнится в рамках выбранных настроек разрешений, действующих в рамках этого действия, или, если это невозможно, сгенерирует связанное AccessControlException.
Типы параметров:
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 в рамках текущего контекста управления доступом, с текущим загрузчиком контекста классов как загрузчиком контекста классов. Этот метод обычно следует вызывать в рамках AccessController.doPrivileged действия для создания callable, которое, если возможно, выполнится в рамках выбранных настроек разрешений, действующих в рамках этого действия, или, если это невозможно, сгенерирует связанное AccessControlException.
Типы параметров:
T - тип результата callable
Параметры:
callable - базовая задача
Возвращает:
объект callable
Исключения:
NullPointerException - если callable null
AccessControlException - если текущий контекст управления доступом не имеет разрешений для установки и получения загрузчика контекста класса

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

Spec-Zone.ru

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