Spec-Zone.ru › OpenJDK 8

Класс 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(PrivilegedAction<?> action)

Возвращает объект Callable, который при вызове выполняет заданное привилегированное действие и возвращает его результат.

static Callable<Object> callable(PrivilegedExceptionAction<?> action)

Возвращает объект Callable, который при вызове выполняет заданное привилегированное действие, обрабатывающее исключения, и возвращает его результат.

static Callable<Object> callable(Runnable task)

Возвращает объект Callable, который при вызове выполняет заданную задачу и возвращает null.

static <T> Callable<T> callable(Runnable task, T result)

Возвращает объект 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()

Создаёт пул потоков с кражей работ, используя все available processors в качестве целевого уровня параллельности.

static ExecutorService newWorkStealingPool(int parallelism)

Создаёт пул потоков, поддерживающий заданный уровень параллельности и, возможно, использующий несколько очередей для уменьшения конфликтов.

static <T> Callable<T> privilegedCallable(Callable<T> callable)

Возвращает объект Callable, который при вызове выполнит заданный callable в текущем контексте управления доступом.

static <T> Callable<T> privilegedCallableUsingCurrentClassLoader(Callable<T> callable)

Возвращает объект Callable, который при вызове выполнит заданный callable в текущем контексте управления доступом, используя текущий контекстный класс-загрузчик.

static ThreadFactory privilegedThreadFactory()

Возвращает фабрику потоков, используемую для создания новых потоков с теми же правами доступа, что и у текущего потока.

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()

Создаёт пул потоков с воровством задач, используя все available processors как целевой уровень параллелизма.

Возвращает:
новый созданный пул потоков
С:
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, что и некоторый другой выделенный поток, вы можете создать пользовательскую ThreadFactory, в которой этот поток ожидает и обрабатывает запросы на создание других потоков, которые унаследуют его значения.

Возвращает:
фабрику потоков
Изначает:
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.

Spec-Zone.ru

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