ExecutorCompletionService Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
A CompletionService
que usa um fornecido Executor
para executar tarefas.
[Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public class ExecutorCompletionService : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.ICompletionService
[<Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type ExecutorCompletionService = class
inherit Object
interface ICompletionService
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Herança
- Atributos
- Implementações
Comentários
A CompletionService
que usa um fornecido Executor
para executar tarefas. Essa classe organiza que as tarefas enviadas são, após a conclusão, colocadas em uma fila acessível usando take
o . A classe é leve o suficiente para ser adequada para uso transitório ao processar grupos de tarefas.
<b>Exemplos de uso.</b>
Suponha que você tenha um conjunto de solvers para um determinado problema, cada um retornando um valor de algum tipo Result
, e gostaria de executá-los simultaneamente, processando os resultados de cada um deles que retornam um valor não nulo, em algum método use(Result r)
. Você pode escrever isso como:
{@code
void solve(Executor e,
Collection<Callable<Result>> solvers)
throws InterruptedException, ExecutionException {
CompletionService<Result> cs
= new ExecutorCompletionService<>(e);
solvers.forEach(cs::submit);
for (int i = solvers.size(); i > 0; i--) {
Result r = cs.take().get();
if (r != null)
use(r);
}
}}
Suponha, em vez disso, que você gostaria de usar o primeiro resultado não nulo do conjunto de tarefas, ignorando qualquer uma que encontre exceções e cancelando todas as outras tarefas quando a primeira estiver pronta:
{@code
void solve(Executor e,
Collection<Callable<Result>> solvers)
throws InterruptedException {
CompletionService<Result> cs
= new ExecutorCompletionService<>(e);
int n = solvers.size();
List<Future<Result>> futures = new ArrayList<>(n);
Result result = null;
try {
solvers.forEach(solver -> futures.add(cs.submit(solver)));
for (int i = n; i > 0; i--) {
try {
Result r = cs.take().get();
if (r != null) {
result = r;
break;
}
} catch (ExecutionException ignore) {}
}
} finally {
futures.forEach(future -> future.cancel(true));
}
if (result != null)
use(result);
}}
Adicionado em 1.5.
Documentação Java para java.util.concurrent.ExecutorCompletionService
.
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
ExecutorCompletionService(IExecutor) |
Cria um ExecutorCompletionService usando o executor fornecido para execução de tarefas base e uma fila de |
ExecutorCompletionService(IExecutor, IBlockingQueue) |
Cria um ExecutorCompletionService usando o executor fornecido para execução da tarefa base e a fila fornecida como sua fila de conclusão. |
ExecutorCompletionService(IntPtr, JniHandleOwnership) |
Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo tempo de execução. |
Propriedades
Class |
Retorna a classe de tempo de execução deste |
Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
JniIdentityHashCode |
A |
JniPeerMembers |
A |
PeerReference |
A |
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. |
Métodos
Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
Dispose() |
A |
Dispose(Boolean) |
A |
Equals(Object) |
Indica se algum outro objeto é "igual" a este. (Herdado de Object) |
GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
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) |
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) |
Poll() |
Recupera e remove o Futuro que representa a próxima tarefa concluída ou |
Poll(Int64, TimeUnit) |
Recupera e remove o Futuro que representa a próxima tarefa concluída, aguardando, se necessário, até o tempo de espera especificado, se nenhum ainda estiver presente. |
PollAsync() |
A |
PollAsync(Int64, TimeUnit) |
A |
SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle. (Herdado de Object) |
Submit(ICallable) |
A |
Submit(IRunnable, Object) |
A |
Take() |
Recupera e remove o Futuro que representa a próxima tarefa concluída, aguardando se nenhum ainda estiver presente. |
TakeAsync() |
A |
ToArray<T>() |
A |
ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
UnregisterFromRuntime() |
A |
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() |
A |
IJavaPeerable.DisposeUnlessReferenced() |
A |
IJavaPeerable.Finalized() |
A |
IJavaPeerable.JniManagedPeerState |
A |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
A |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
A |
IJavaPeerable.SetPeerReference(JniObjectReference) |
A |
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) |
A |
GetJniTypeName(IJavaPeerable) |
A |