Compartilhar via


ForkJoinPool.IManagedBlocker Interface

Definição

Interface para estender o paralelismo gerenciado para tarefas em execução em ForkJoinPools.

[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 ForkJoinPools.

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 ForkJoinPools.

JniIdentityHashCode

Retorna o valor de java.lang.System.identityHashCode() para a instância encapsulada.

(Herdado de IJavaPeerable)
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 Dispose(), caso contrário, não faz nada.

(Herdado de IJavaPeerable)
Finalized()

Chamado quando a instância tiver sido finalizada.

(Herdado de IJavaPeerable)
SetJniIdentityHashCode(Int32)

Defina o valor retornado por JniIdentityHashCode.

(Herdado de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Interface para estender o paralelismo gerenciado para tarefas em execução em ForkJoinPools.

(Herdado de IJavaPeerable)
SetPeerReference(JniObjectReference)

Defina o valor retornado por PeerReference.

(Herdado de IJavaPeerable)
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 ForkJoinPools.

GetJniTypeName(IJavaPeerable)

Interface para estender o paralelismo gerenciado para tarefas em execução em ForkJoinPools.

Aplica-se a