ReentrantLock Clase

Definición

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

[Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)]
public class ReentrantLock : Java.Lang.Object, IDisposable, Java.IO.ISerializable, Java.Util.Concurrent.Locks.ILock
[<Android.Runtime.Register("java/util/concurrent/locks/ReentrantLock", DoNotGenerateAcw=true)>]
type ReentrantLock = class
    inherit Object
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ILock
Herencia
ReentrantLock
Atributos
Implementaciones

Comentarios

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

El ReentrantLock subproceso es <propiedad> de< em>, pero aún no lo desbloquea. Una invocación de subprocesos lock devolverá, adquirir correctamente el bloqueo, cuando el bloqueo no es propiedad de otro subproceso. El método devolverá inmediatamente si el subproceso actual ya posee el bloqueo. Esto se puede comprobar mediante los métodos #isHeldByCurrentThready #getHoldCount.

El constructor de esta clase acepta un <parámetro opcional em>fairness</em> . Cuando se establece true, en contención, los bloqueos favorecen la concesión de acceso al subproceso de espera más largo. De lo contrario, este bloqueo no garantiza ningún pedido de acceso determinado. Los programas que usan bloqueos justos a los que acceden muchos subprocesos pueden mostrar un rendimiento general menor (es decir, son más lentos; a menudo, mucho más lentos) que los que usan la configuración predeterminada, pero tienen variaciones más pequeñas en los tiempos para obtener bloqueos y garantizar la falta de hambre. Sin embargo, tenga en cuenta que la equidad de los bloqueos no garantiza la equidad de la programación de subprocesos. Por lo tanto, uno de muchos subprocesos que usan un bloqueo justo puede obtenerlo varias veces sucesivamente, mientras que otros subprocesos activos no progresan y no mantienen el bloqueo actualmente. Tenga en cuenta también que el método notime #tryLock() no respeta la configuración de equidad. Se realizará correctamente si el bloqueo está disponible incluso si otros subprocesos están esperando.

Se recomienda practicar siempre<></em> inmediatamente después de una llamada a lock con un try bloque, normalmente en un antes y después de la construcción, como:

{@code
            class X {
              private final ReentrantLock lock = new ReentrantLock();
              // ...

              public void m() {
                lock.lock();  // block until condition holds
                try {
                  // ... method body
                } finally {
                  lock.unlock();
                }
              }
            }}

Además de implementar la Lock interfaz, esta clase define una serie de public métodos y protected para inspeccionar el estado del bloqueo. Algunos de estos métodos solo son útiles para la instrumentación y la supervisión.

La serialización de esta clase se comporta de la misma manera que los bloqueos integrados: un bloqueo deserializado está en estado desbloqueado, independientemente de su estado cuando se serialice.

Este bloqueo admite un máximo de 2147483647 bloqueos recursivos por el mismo subproceso. Los intentos de superar este límite provocan Error que se produzcan métodos de bloqueo.

Agregado en 1.5.

Java documentación para java.util.concurrent.locks.ReentrantLock.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Constructores

Nombre Description
ReentrantLock()

Crea una instancia de ReentrantLock.

ReentrantLock(Boolean)

Crea una instancia de con la directiva de ReentrantLock equidad especificada.

ReentrantLock(IntPtr, JniHandleOwnership)

Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución.

Propiedades

Nombre Description
Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
HasQueuedThreads

Consulta si algún subproceso está esperando adquirir este bloqueo.

HoldCount

Consulta el número de suspensiones en este bloqueo por el subproceso actual.

IsFair

Devuelve true si este bloqueo tiene la equidad establecida en true.

IsHeldByCurrentThread

Consulta si el subproceso actual mantiene este bloqueo.

IsLocked

Consulta si este bloqueo se mantiene en cualquier subproceso.

JniIdentityHashCode

Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad.

(Heredado de Object)
JniManagedPeerState

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
JniPeerMembers

Obtiene los metadatos de JNI usados para invocar miembros de este Java del mismo nivel.

Owner

Devuelve el subproceso que posee actualmente este bloqueo o null si no es propiedad.

PeerReference

Obtiene la referencia de objeto JNI para este Java del mismo nivel.

(Heredado de Object)
QueuedThreads

Devuelve una colección que contiene subprocesos que pueden estar esperando adquirir este bloqueo.

QueueLength

Devuelve una estimación del número de subprocesos que esperan adquirir este bloqueo.

ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

Métodos

Nombre Description
Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
Dispose()

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
Dispose(Boolean)

Libera los recursos mantenidos por este Java del mismo nivel.

(Heredado de Object)
DisposeUnlessReferenced()

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
Equals(Object)

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash para el objeto .

(Heredado de Object)
GetWaitingThreads(ICondition)

Devuelve una colección que contiene esos subprocesos que pueden estar esperando la condición dada asociada a este bloqueo.

GetWaitQueueLength(ICondition)

Devuelve una estimación del número de subprocesos en espera de la condición dada asociada a este bloqueo.

HasQueuedThread(Thread)

Consulta si el subproceso dado está esperando adquirir este bloqueo.

HasWaiters(ICondition)

Consulta si algún subproceso está esperando la condición dada asociada a este bloqueo.

JavaFinalize()

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
Lock()

Adquiere el bloqueo.

LockInterruptibly()

Adquiere el bloqueo a menos que se interrumpa el subproceso actual.

NewCondition()

Devuelve una Condition instancia para su uso con esta Lock instancia.

Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
ToArray<T>()

Crea una matriz administrada a partir de este contenedor de matriz Java.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
TryLock()

Adquiere el bloqueo solo si no lo mantiene otro subproceso en el momento de la invocación.

TryLock(Int64, TimeUnit)

Adquiere el bloqueo si no lo mantiene otro subproceso dentro del tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

Unlock()

Intenta liberar este bloqueo.

UnregisterFromRuntime()

Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><>

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

Nombre Description
IJavaPeerable.Disposed()

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
IJavaPeerable.Finalized()

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

(Heredado de JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

Métodos de extensión

Nombre Description
GetJniTypeName(IJavaPeerable)

Obtiene el nombre JNI del tipo de la instancia self.

JavaAs<TResult>(IJavaPeerable)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

Una exclusión Lock mutua reentrante con el mismo comportamiento básico y semántica que el bloqueo de monitor implícito al que se accede mediante synchronized métodos e instrucciones, pero con funcionalidades extendidas.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Intente coerción self para escribir TResult, comprobando que la coerción es válida en el lado de Java.

Se aplica a