ForkJoinPool Classe

Definição

Um ExecutorService para correr 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
Herança
Atributos

Comentários

Um ExecutorService para correr ForkJoinTasks. A ForkJoinPool fornece o ponto de entrada para envios de nãoForkJoinTask clientes, bem como operações de gerenciamento e monitoramento.

A ForkJoinPool difere de outros tipos principalmente ExecutorService em virtude de empregar <em>work-stealing</em>: todos os threads no pool tentam encontrar e executar tarefas enviadas ao pool e/ou criadas por outras tarefas ativas (eventualmente bloqueando a espera por trabalho se nenhuma existir). Isso permite um processamento eficiente quando a maioria das tarefas gera outras subtarefas (como a maioria ForkJoinTaskdas s), bem como quando muitas pequenas tarefas são enviadas ao pool de clientes externos. Especialmente ao definir <em>asyncMode</em> como true em construtores, ForkJoinPools também pode ser apropriado para uso com tarefas de estilo de evento que nunca são associadas. Todos os threads de trabalho são inicializados com Thread#isDaemon set true.

Uma estática #commonPool() está disponível e é apropriada para a maioria dos aplicativos. O pool comum é usado por qualquer ForkJoinTask que não é explicitamente enviado para um pool especificado. O uso do pool comum normalmente reduz o uso de recursos (seus threads são recuperados lentamente durante os períodos de não uso e restabelecidos após o uso subsequente).

Para aplicativos que exigem pools separados ou personalizados, um ForkJoinPool pode ser construído com um determinado nível de paralelismo de destino, por padrão, igual ao número de processadores disponíveis. O pool tenta manter threads ativos (ou disponíveis) suficientes adicionando, suspendendo ou retomando dinamicamente threads de trabalho internos, mesmo que algumas tarefas estejam paradas esperando para ingressar em outras. No entanto, esses ajustes não são garantidos em face de E/S bloqueada ou outra sincronização não gerenciada. A interface aninhada ManagedBlocker permite a extensão dos tipos de sincronização acomodados. As políticas padrão podem ser substituídas usando um construtor com parâmetros correspondentes aos documentados na classe ThreadPoolExecutor.

Além dos métodos de execução e controle do ciclo de vida, essa classe fornece métodos de verificação de status (por exemplo #getStealCount) que se destinam a ajudar no desenvolvimento, ajuste e monitoramento de aplicativos de bifurcação/junção. Além disso, o método #toString retorna indicações do estado do pool em uma forma conveniente para monitoramento informal.

Como é o caso de outros ExecutorServices, há três métodos principais de execução de tarefas resumidos na tabela a seguir. Eles são projetados para serem usados principalmente por clientes que ainda não estão envolvidos em cálculos de bifurcação/junção no pool atual. As principais formas desses métodos aceitam instâncias de ForkJoinTask, mas formas sobrecarregadas também permitem a execução mista de atividades simples Runnable- ou Callable- baseadas também. No entanto, as tarefas que já estão sendo executadas em um pool normalmente devem usar os formulários de computação interna listados na tabela, a menos que usem tarefas de estilo de evento assíncronas que geralmente não são associadas, caso em que há pouca diferença entre as opções de métodos.

<table class="plain">caption Resumo dos métodos< de execução de tarefas/caption<>tr<>td></td<>th scope="col"> Chamada de clientes< não-fork/junto/th<>th scope="col"> Chamada de dentro de computação fork/join/<th></tr<>tr<>th scope="row" style="text-align:left"> Organizar execução< assíncrona/th><td>#execute(ForkJoinTask)</td td><ForkJoinTask#fork/td><>><</Tr><tr th scope="row" style="text-align:left"> Aguarde e obtenha result</th<>td#invoke(ForkJoinTask)<>/td><tdForkJoinTask#invoke></td></tr<>tr th<>scope="row" style="text-align:left"> Organize exec e obtenha Future</th<>td#submit(ForkJoinTask)></td<>td>ForkJoinTask#fork (ForkJoinTasks <em>are</em> Futures)</td></tr/table<>><>

Os parâmetros usados para construir o pool comum podem ser controlados definindo as seguintes propriedades do sistema System#getProperty: <ul><lijava.util.concurrent.ForkJoinPool.common.parallelism> - o nível de paralelismo, um inteiro <não negativo li>java.util.concurrent.ForkJoinPool.common.threadFactory - o nome da classe de um .ForkJoinWorkerThreadFactory O carregador de classes do sistema ClassLoader#getSystemClassLoader() é usado para carregar essa classe. <li>java.util.concurrent.ForkJoinPool.common.exceptionHandler - o nome da classe de um UncaughtExceptionHandler. O carregador de classes do sistema ClassLoader#getSystemClassLoader() é usado para carregar essa classe. <li>java.util.concurrent.ForkJoinPool.common.maximumSpares - o número máximo de threads extras permitidos para manter o paralelismo de destino (padrão 256). </ul> Se nenhuma fábrica de threads for fornecida por meio de uma propriedade do sistema, o pool comum usará uma fábrica que usa o carregador de classes do sistema como o carregador de classes de contexto de thread Thread#getContextClassLoader(). Além disso, se um SecurityManager estiver presente, o pool comum usará uma fábrica fornecendo threads que não Permissions têm habilitado.

Em caso de erro no estabelecimento dessas configurações, os parâmetros padrão são usados. É possível desabilitar ou limitar o uso de threads no pool comum definindo a propriedade parallelism como zero e/ou usando uma fábrica que pode retornar null. No entanto, isso pode fazer com que tarefas não unidas nunca sejam executadas.

<b>Notas de implementação:</b> Essa implementação restringe o número máximo de threads em execução a 32767. Tentativas de criar pools com número maior que o máximo resultam em IllegalArgumentException.

Essa implementação rejeita tarefas enviadas (ou seja, lançando RejectedExecutionException) somente quando o pool é desligado ou os recursos internos foram esgotados.

Adicionado em 1.7.

Documentação Java para java.util.concurrent.ForkJoinPool.

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Construtores

ForkJoinPool()

Cria um ForkJoinPool paralelismo igual a java.lang.Runtime#availableProcessors, usando padrões para todos os outros parâmetros (consulte #ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit)).

ForkJoinPool(Int32)

Cria um ForkJoinPool com o nível de paralelismo indicado, usando padrões para todos os outros parâmetros (consulte #ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit)).

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

Cria um ForkJoinPool com paralelismo igual a java.lang.Runtime#availableProcessors, usando o #defaultForkJoinWorkerThreadFactory fábrica de threads padrão, sem UncaughtExceptionHandler e modo de processamento LIFO não assíncrono.

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

Um ExecutorService para correr ForkJoinTasks.

ForkJoinPool(IntPtr, JniHandleOwnership)

Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo tempo de execução.

Propriedades

ActiveThreadCount

Retorna uma estimativa do número de threads que estão roubando ou executando tarefas no momento.

AsyncMode

Retorna true se esse pool usar o modo de agendamento local first-in-first-out para tarefas bifurcadas que nunca são associadas.

Class

Retorna a classe de tempo de execução deste Object.

(Herdado de Object)
CommonPoolParallelism

Retorna o nível de paralelismo direcionado do pool comum.

DefaultForkJoinWorkerThreadFactory

Cria um novo ForkJoinWorkerThread.

Factory

Devolve a fábrica usada para a construção de novos trabalhadores.

Handle

O identificador para a instância subjacente do Android.

(Herdado de Object)
HasQueuedSubmissions

Retorna true se houver tarefas enviadas a esse pool que ainda não começaram a ser executadas.

IsQuiescent

Retorna true se todos os threads de trabalho estiverem ociosos no momento.

IsShutdown

Retorna true se esse pool tiver sido desligado.

IsTerminated

Retorna true se todas as tarefas tiverem sido concluídas após o encerramento.

IsTerminating

Retorna true se o processo de rescisão tiver começado, mas ainda não tiver sido concluído.

JniIdentityHashCode

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
JniPeerMembers

Um ExecutorService para correr ForkJoinTasks.

Parallelism

Retorna o nível de paralelismo direcionado desse pool.

PeerReference

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
PoolSize

Retorna o número de threads de trabalho iniciados, mas ainda não encerrados.

QueuedSubmissionCount

Retorna uma estimativa do número de tarefas enviadas a esse pool que ainda não começaram a ser executadas.

QueuedTaskCount

Retorna uma estimativa do número total de tarefas atualmente mantidas em filas por threads de trabalho (mas não incluindo as tarefas enviadas ao pool que não começaram a ser executadas).

RunningThreadCount

Retorna uma estimativa do número de threads de trabalho que não estão bloqueados aguardando para ingressar em tarefas ou para outra sincronização gerenciada.

StealCount

Retorna uma estimativa do número total de tarefas concluídas que foram executadas por um thread diferente do remetente.

ThresholdClass

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

ThresholdType

Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código.

UncaughtExceptionHandler

Retorna o manipulador para threads de trabalho internos que terminam devido a erros irrecuperáveis encontrados durante a execução de tarefas.

Métodos

AwaitQuiescence(Int64, TimeUnit)

Se chamado por um ForkJoinTask operando nesse pool, equivalente em efeito a ForkJoinTask#helpQuiesce.

AwaitTermination(Int64, TimeUnit)

Bloqueia até que todas as tarefas tenham concluído a execução após uma solicitação de desligamento, ou o tempo limite ocorra, ou o thread atual seja interrompido, o que ocorrer primeiro.

AwaitTerminationAsync(Int64, TimeUnit)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de AbstractExecutorService)
Clone()

Cria e retorna uma cópia desse objeto.

(Herdado de Object)
CommonPool()

Retorna a instância comum do pool.

Dispose()

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
Dispose(Boolean)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
DrainTasksTo(ICollection<ForkJoinTask>)

Remove todas as tarefas enviadas e bifurcadas não executadas disponíveis das filas de agendamento e as adiciona à coleção fornecida, sem alterar seu status de execução.

Equals(Object)

Indica se algum outro objeto é "igual" a este.

(Herdado de Object)
Execute(ForkJoinTask)

Organiza a execução (assíncrona) da tarefa determinada.

Execute(IRunnable)
GetHashCode()

Retorna um valor de código hash para o objeto.

(Herdado de Object)
Invoke(ForkJoinTask)

Executa a tarefa dada, retornando seu resultado após a conclusão.

InvokeAll(ICollection)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de AbstractExecutorService)
InvokeAll(ICollection, Int64, TimeUnit)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de AbstractExecutorService)
InvokeAny(ICollection)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de AbstractExecutorService)
InvokeAny(ICollection, Int64, TimeUnit)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de AbstractExecutorService)
JavaFinalize()

Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto.

(Herdado de Object)
ManagedBlock(ForkJoinPool+IManagedBlocker)

Executa a tarefa de bloqueio possível.

NewTaskFor(ICallable)

Retorna um RunnableFuture para a determinada tarefa chamável.

(Herdado de AbstractExecutorService)
NewTaskFor(IRunnable, Object)

Retorna a RunnableFuture para o determinado valor executável e padrão.

(Herdado de AbstractExecutorService)
Notify()

Ativa um único thread que está aguardando no monitor deste objeto.

(Herdado de Object)
NotifyAll()

Ativa todos os threads que estão aguardando no monitor deste objeto.

(Herdado de Object)
PollSubmission()

Remove e retorna o próximo envio não executado, se houver um disponível.

SetHandle(IntPtr, JniHandleOwnership)

Define a propriedade Handle.

(Herdado de Object)
Shutdown()

Possivelmente inicia um desligamento ordenado no qual as tarefas enviadas anteriormente são executadas, mas nenhuma nova tarefa será aceita.

ShutdownNow()

Possivelmente tenta cancelar e/ou parar todas as tarefas e rejeitar todas as tarefas enviadas subsequentemente.

Submit(ForkJoinTask)

Envia um ForkJoinTask para execução.

Submit(ICallable)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de AbstractExecutorService)
Submit(IRunnable)

Envia uma tarefa Runnable para execução e retorna um Future representando essa tarefa.

(Herdado de AbstractExecutorService)
Submit(IRunnable, Object)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de AbstractExecutorService)
ToArray<T>()

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
ToString()

Retorna uma representação de cadeia de caracteres do objeto.

(Herdado de Object)
UnregisterFromRuntime()

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
Wait()

Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em notificado</em> ou <em>interrompido</em>>.

(Herdado de Object)
Wait(Int64)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)
Wait(Int64, Int32)

Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido.

(Herdado de Object)

Implantações explícitas de interface

IJavaPeerable.Disposed()

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
IJavaPeerable.DisposeUnlessReferenced()

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
IJavaPeerable.Finalized()

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
IJavaPeerable.JniManagedPeerState

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Um ExecutorService para correr ForkJoinTasks.

(Herdado de Object)

Métodos de Extensão

JavaCast<TResult>(IJavaObject)

Executa uma conversão de tipo verificada em tempo de execução do Android.

JavaCast<TResult>(IJavaObject)

Um ExecutorService para correr ForkJoinTasks.

GetJniTypeName(IJavaPeerable)

Um ExecutorService para correr ForkJoinTasks.

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

Um ExecutorService para correr ForkJoinTasks.

InvokeAnyAsync(IExecutorService, ICollection)

Um ExecutorService para correr ForkJoinTasks.

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

Um ExecutorService para correr ForkJoinTasks.

Aplica-se a