ForkJoinPool.IManagedBlocker Interface
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.
Interface para estender o paralelismo gerenciado para tarefas em execução em ForkJoinPool
s.
[Android.Runtime.Register("java/util/concurrent/ForkJoinPool$ManagedBlocker", "", "Java.Util.Concurrent.ForkJoinPool/IManagedBlockerInvoker")]
public interface ForkJoinPool.IManagedBlocker : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/ForkJoinPool$ManagedBlocker", "", "Java.Util.Concurrent.ForkJoinPool/IManagedBlockerInvoker")>]
type ForkJoinPool.IManagedBlocker = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Atributos
- Implementações
Comentários
Interface para estender o paralelismo gerenciado para tarefas em execução em ForkJoinPool
s.
A ManagedBlocker
fornece dois métodos. O método #isReleasable
deve retornar true
se o bloqueio não for necessário. O método #block
bloqueia o thread atual, se necessário (talvez invocando isReleasable
internamente antes de realmente bloquear). Essas ações são executadas por qualquer thread invocando ForkJoinPool#managedBlock(ManagedBlocker)
. Os métodos incomuns nessa API acomodam sincronizadores que podem, mas não costumam bloquear, por longos períodos. Do mesmo modo, permitem um tratamento interno mais eficiente dos casos em que podem ser, mas normalmente não são, necessários trabalhadores adicionais para garantir um paralelismo suficiente. Para esse fim, as implementações do método isReleasable
devem ser passíveis de repetidas invocações. Nenhum método é invocado após uma invocação anterior de isReleasable
ou block
retorna true
.
Por exemplo, aqui está um ManagedBlocker baseado em um ReentrantLock:
{@code
class ManagedLocker implements ManagedBlocker {
final ReentrantLock lock;
boolean hasLock = false;
ManagedLocker(ReentrantLock lock) { this.lock = lock; }
public boolean block() {
if (!hasLock)
lock.lock();
return true;
}
public boolean isReleasable() {
return hasLock || (hasLock = lock.tryLock());
}
}}
Aqui está uma classe que possivelmente bloqueia a espera por um item em uma determinada fila:
{@code
class QueueTaker<E> implements ManagedBlocker {
final BlockingQueue<E> queue;
volatile E item = null;
QueueTaker(BlockingQueue<E> q) { this.queue = q; }
public boolean block() throws InterruptedException {
if (item == null)
item = queue.take();
return true;
}
public boolean isReleasable() {
return item != null || (item = queue.poll()) != null;
}
public E getItem() { // call after pool.managedBlock completes
return item;
}
}}
Documentação Java para java.util.concurrent.ForkJoinPool.ManagedBlocker
.
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.
Propriedades
Handle |
Obtém o valor JNI do objeto Android subjacente. (Herdado de IJavaObject) |
IsReleasable |
Interface para estender o paralelismo gerenciado para tarefas em execução em |
JniIdentityHashCode |
Retorna o valor de |
JniManagedPeerState |
Estado do par gerenciado. (Herdado de IJavaPeerable) |
JniPeerMembers |
Acesso de membros e suporte à invocação. (Herdado de IJavaPeerable) |
PeerReference |
Retorna uma JniObjectReference das instâncias do objeto Java encapsulado. (Herdado de IJavaPeerable) |
Métodos
Block() |
Possivelmente bloqueia o thread atual, por exemplo, aguardando um bloqueio ou condição. |
Disposed() |
Chamado quando a instância tiver sido descartada. (Herdado de IJavaPeerable) |
DisposeUnlessReferenced() |
Se não houver referências pendentes a este caso, então chame |
Finalized() |
Chamado quando a instância tiver sido finalizada. (Herdado de IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
Defina o valor retornado por |
SetJniManagedPeerState(JniManagedPeerStates) |
Interface para estender o paralelismo gerenciado para tarefas em execução em |
SetPeerReference(JniObjectReference) |
Defina o valor retornado por |
UnregisterFromRuntime() |
Cancele o registro dessa instância para que o tempo de execução não a retorne de chamadas futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Herdado de IJavaPeerable) |
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) |
Interface para estender o paralelismo gerenciado para tarefas em execução em |
GetJniTypeName(IJavaPeerable) |
Interface para estender o paralelismo gerenciado para tarefas em execução em |