Язык

ForkJoinPool Класс

Определение

An ExecutorService for running ForkJoinTasks.

[Android.Runtime.Register("java/util/concurrent/ForkJoinPool", DoNotGenerateAcw=true)]
public class ForkJoinPool : Java.Util.Concurrent.AbstractExecutorService
[<Android.Runtime.Register("java/util/concurrent/ForkJoinPool", DoNotGenerateAcw=true)>]
type ForkJoinPool = class
    inherit AbstractExecutorService
Наследование
Атрибуты

Комментарии

An ExecutorService for running ForkJoinTasks. Предоставляет ForkJoinPool точку входа для отправки от клиентовForkJoinTask , а также операций управления и мониторинга.

В ForkJoinPool отличие от других видов ExecutorService , в основном благодаря использованию <em>work-stealing</em>: все потоки в пуле пытаются найти и выполнить задачи, отправленные в пул, и /или созданные другими активными задачами (в конечном итоге блокируют ожидание работы, если нет). Это позволяет эффективно обрабатывать, когда большинство задач создают другие подзадачи (как и большинство ForkJoinTasks), а также когда многие небольшие задачи отправляются в пул из внешних клиентов. Особенно при задании <em>asyncMode</em> значение true в конструкторах также может быть подходящим для использования с задачами стиля событий, ForkJoinPoolкоторые никогда не присоединяются. Все рабочие потоки инициализированы с набором Thread#isDaemontrue.

#commonPool() Статический доступен и подходит для большинства приложений. Общий пул используется любым ForkJoinTask, который не отправляется в указанный пул явным образом. Использование общего пула обычно уменьшает использование ресурсов (его потоки медленно удаляются в периоды неиспользования и восстанавливаются при последующем использовании).

Для приложений, требующих отдельных или настраиваемых пулов, ForkJoinPool можно создать с заданным уровнем параллелизма целевого объекта; по умолчанию равно количеству доступных процессоров. Пул пытается поддерживать достаточно активных (или доступных) потоков путем динамического добавления, приостановки или возобновления внутренних рабочих потоков, даже если некоторые задачи остановлены, ожидая присоединения к другим. Однако такая корректировка не гарантируется в случае блокировки ввода-вывода или другой неуправляемой синхронизации. Вложенный ManagedBlocker интерфейс обеспечивает расширение типов синхронизации, включаемых в нее. Политики по умолчанию могут быть переопределены с помощью конструктора с параметрами, соответствующими указанным в классе ThreadPoolExecutor.

Помимо методов управления выполнением и жизненным циклом, этот класс предоставляет методы проверки состояния (например #getStealCount, предназначенные для разработки, настройки и мониторинга приложений вилки и соединения). Кроме того, метод #toString возвращает признаки состояния пула в удобной форме для неформального мониторинга.

Как и в случае с другими исполнителями, в следующей таблице приведены три основных метода выполнения задач. Они предназначены для использования в основном клиентами, не участвующими в вычислениях вилки или соединения в текущем пуле. Основные формы этих методов принимают экземпляры ForkJoinTask, но перегруженные формы также разрешают смешанное выполнение простых Runnableили Callableоснованных действий. Однако задачи, которые уже выполняются в пуле, обычно должны использовать формы внутри вычислений, перечисленные в таблице, если только не используется асинхронные задачи стиля событий, которые обычно не присоединены, в этом случае мало различий в выборе методов.

<table class="plain">caption Summary of task execution methods</caption><>tr<>td/td<><> th scope="col"< Call from non-fork/join clients>/<>th th scope="col"< Call from within fork/join computations>/<>th/tr tr<><>th scope="row" style="text-align:left"< Упорядочить асинхронное выполнение><>/thd<>#execute(ForkJoinTask)/td/td<>/td<>ForkJoinTask#fork<></tr><tr><th scope="row" style="text-align:left"> Await и get result<></th td>#invoke(ForkJoinTask)</td><>ForkJoinTask#invoke</><tr tr><th><scope="row" style="text-align:left"> Упорядочить exec и получить future</><th td>#submit(ForkJoinTask)</td><>ForkJoinTask#fork (ForkJoinTasks <em>are</em> Futures)</td></tr></table>

Параметры, используемые для создания общего пула, можно контролировать, задав следующие свойства системы System#getProperty: <ul><li>java.util.concurrent.ForkJoinPool.common.parallelism - уровень параллелизма, неотрицательное целое число <li>java.util.concurrent.ForkJoinPool.common.threadFactory - имя класса a.ForkJoinWorkerThreadFactory Загрузчик системного класса ClassLoader#getSystemClassLoader() используется для загрузки этого класса. <li>java.util.concurrent.ForkJoinPool.common.exceptionHandler — имя класса объекта UncaughtExceptionHandler. Загрузчик системного класса ClassLoader#getSystemClassLoader() используется для загрузки этого класса. <li>java.util.concurrent.ForkJoinPool.common.maximumSpares — максимальное число разрешенных дополнительных потоков для поддержания целевого параллелизма (по умолчанию 256). </ul> , если фабрика потоков не предоставляется с помощью системного свойства, общий пул использует фабрику, которая использует загрузчик системного класса в качестве загрузчика класса thread#getContextClassLoader() класса контекста потока. Кроме того, если SecurityManager присутствует, общий пул использует заводские потоки, которые не Permissions включены, и не гарантируют сохранение значений java.lang.ThreadLocal переменных в задачах.

При возникновении ошибки при установке этих параметров используются параметры по умолчанию. Можно отключить или ограничить использование потоков в общем пуле, задав свойству параллелизма нулевое значение и (или) с помощью фабрики, которая может возвращать null. Однако это может привести к тому, что невыполненные задачи никогда не выполняются.

Добавлено в версии 1.7.

Java документации по java.util.concurrent.ForkJoinPool.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Конструкторы

Имя. Описание
ForkJoinPool()

Создает параллелизм, равный ForkJoinPooljava.lang.Runtime#availableProcessors, используя значения по умолчанию для всех остальных параметров (см. раздел #ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit)).

ForkJoinPool(Int32, ForkJoinPool+IForkJoinWorkerThreadFactory, Thread+IUncaughtExceptionHandler, Boolean, Int32, Int32, Int32, IPredicate, Int64, TimeUnit)

Создает ForkJoinPool с заданными параметрами.

ForkJoinPool(Int32, ForkJoinPool+IForkJoinWorkerThreadFactory, Thread+IUncaughtExceptionHandler, Boolean)

ForkJoinPool Создает параллелизм, равный java.lang.Runtime#availableProcessors, с помощью фабрики потоков по умолчанию #defaultForkJoinWorkerThreadFactory, без UncaughtExceptionHandler и асинхронного режима обработки LIFO.

ForkJoinPool(Int32)

ForkJoinPool Создает объект с указанным уровнем параллелизма, используя значения по умолчанию для всех остальных параметров (см. раздел #ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit)).

ForkJoinPool(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Имя. Описание
ActiveThreadCount

Возвращает оценку количества потоков, которые в настоящее время крадут или выполняют задачи.

AsyncMode

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

Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
CommonPoolParallelism

Возвращает целевой уровень параллелизма общего пула.

DefaultForkJoinWorkerThreadFactory

Создает новый forkJoinWorkerThread.

Factory

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

Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
HasQueuedSubmissions

Возвращается true , если в этом пуле есть какие-либо задачи, которые еще не начали выполняться.

IsQuiescent

Возвращает, true если все рабочие потоки в настоящее время неактивны.

IsShutdown

Возвращает значение true , если этот пул был завершен.

IsTerminated

Возвращает, true если все задачи завершились после завершения работы.

IsTerminating

Возвращается true , если процесс завершения начался, но еще не завершен.

JniIdentityHashCode

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

(Унаследовано от Object)
JniManagedPeerState

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
JniPeerMembers

An ExecutorService for running ForkJoinTasks.

Parallelism

Возвращает целевой уровень параллелизма этого пула.

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от Object)
PoolSize

Возвращает число рабочих потоков, которые начались, но еще не завершены.

QueuedSubmissionCount

Возвращает оценку количества задач, отправленных в этот пул, которые еще не начали выполняться.

QueuedTaskCount

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

RunningThreadCount

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

StealCount

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

ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

UncaughtExceptionHandler

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

Методы

Имя. Описание
AwaitQuiescence(Int64, TimeUnit)

Если вызывается forkJoinTask, работающий в этом пуле, эквивалентно.ForkJoinTask#helpQuiesce

AwaitTermination(Int64, TimeUnit)

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

AwaitTerminationAsync(Int64, TimeUnit)

An ExecutorService for running ForkJoinTasks.

(Унаследовано от AbstractExecutorService)
Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Close()

Если это не так #commonPool(), инициирует упорядоченное завершение работы, в котором выполняются ранее отправленные задачи, но новые задачи не будут приняты, и ожидает завершения выполнения всех задач и исполнителя.

CommonPool()

Возвращает общий экземпляр пула.

Construct(JniObjectReference, JniObjectReferenceOptions)

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
DisposeUnlessReferenced()

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
DrainTasksTo(ICollection<ForkJoinTask>)

Удаляет все доступные неисправные отправленные и вилированные задачи из очередей планирования и добавляет их в указанную коллекцию без изменения состояния выполнения.

Equals(Object)

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
Execute(ForkJoinTask)

Упорядочивает (асинхронное) выполнение заданной задачи.

Execute(IRunnable)
ExternalSubmit(ForkJoinTask)

Отправляет заданную задачу, как если бы она была отправлена из клиента, неForkJoinTask являющегося клиентом.

GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
Invoke(ForkJoinTask)

Выполняет заданную задачу, возвращая результат после завершения.

InvokeAll(ICollection, Int64, TimeUnit)

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

(Унаследовано от AbstractExecutorService)
InvokeAll(ICollection)

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

(Унаследовано от AbstractExecutorService)
InvokeAny(ICollection, Int64, TimeUnit)

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

(Унаследовано от AbstractExecutorService)
InvokeAny(ICollection)

Выполняет заданные задачи, возвращая результат успешно выполненного (т. е. без исключения), если это делается.

(Унаследовано от AbstractExecutorService)
JavaFinalize()
Устаревшие.

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

(Унаследовано от Object)
LazySubmit(ForkJoinTask)

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

ManagedBlock(ForkJoinPool+IManagedBlocker)

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

NewTaskFor(ICallable)

RunnableFuture Возвращает объект для данной вызываемой задачи.

(Унаследовано от AbstractExecutorService)
NewTaskFor(IRunnable, Object)

RunnableFuture Возвращает значение для заданного значения runnable и по умолчанию.

(Унаследовано от AbstractExecutorService)
Notify()

Просыпается один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
PollSubmission()

Удаляет и возвращает следующую неисследованную отправку, если она доступна.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetParallelism(Int32)

Изменяет целевой параллелизм этого пула, управляя будущим созданием, использованием и завершением рабочих потоков.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
Shutdown()

Возможно, инициируется упорядоченное завершение работы, в которой выполняются ранее отправленные задачи, но новые задачи не будут приняты.

ShutdownNow()

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

Submit(ForkJoinTask)

Отправляет forkJoinTask для выполнения.

Submit(ICallable)

Отправляет задачу возврата значений для выполнения и возвращает будущее, представляющее ожидающие результаты задачи.

(Унаследовано от AbstractExecutorService)
Submit(IRunnable, Object)

Отправляет задачу Runnable для выполнения и возвращает будущее, представляющее задачу.

(Унаследовано от AbstractExecutorService)
Submit(IRunnable)

Отправляет задачу Runnable для выполнения и возвращает будущее, представляющее задачу.

(Унаследовано от AbstractExecutorService)
ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

Имя. Описание
IJavaPeerable.Disposed()

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
IJavaPeerable.Finalized()

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

An ExecutorService for running ForkJoinTasks.

(Унаследовано от JavaObject)
IJavaPeerable.UnregisterFromRuntime()

An ExecutorService for running ForkJoinTasks.

(Унаследовано от AbstractExecutorService)

Методы расширения

Имя. Описание
AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

An ExecutorService for running ForkJoinTasks.

GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

An ExecutorService for running ForkJoinTasks.

InvokeAnyAsync(IExecutorService, ICollection)

An ExecutorService for running ForkJoinTasks.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

An ExecutorService for running ForkJoinTasks.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

Применяется к