ReentrantLock Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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(Boolean) |
Crea una instancia de con la directiva de |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| Equals(Object) |
Una exclusión |
| 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 |
| 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 |
| 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 |
| IJavaPeerable.Finalized() |
Una exclusión |
| IJavaPeerable.JniObjectReferenceControlBlock |
Una exclusión |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Una exclusión |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Una exclusión |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Una exclusión |
| IJavaPeerable.UnregisterFromRuntime() |
Una exclusión |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Una exclusión |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |