ReentrantReadWriteLock.ReentrantReadLock.TryLock Método
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í.
Sobrecargas
TryLock() |
Adquiere el bloqueo de lectura solo si otro subproceso no mantiene el bloqueo de escritura en el momento de la invocación. |
TryLock(Int64, TimeUnit) |
Adquiere el bloqueo de lectura si otro subproceso no mantiene el bloqueo de escritura dentro del tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#interrupt. |
TryLock()
Adquiere el bloqueo de lectura solo si otro subproceso no mantiene el bloqueo de escritura en el momento de la invocación.
[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")]
public virtual bool TryLock ();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")>]
abstract member TryLock : unit -> bool
override this.TryLock : unit -> bool
Devoluciones
true
si se adquirió el bloqueo de lectura
Implementaciones
- Atributos
Comentarios
Adquiere el bloqueo de lectura solo si otro subproceso no mantiene el bloqueo de escritura en el momento de la invocación.
Adquiere el bloqueo de lectura si otro subproceso no mantiene el bloqueo de escritura y devuelve inmediatamente con el valor true
. Incluso cuando este bloqueo se ha establecido para usar una directiva de ordenación justa, una llamada a tryLock()
<em>will</em> adquiere inmediatamente el bloqueo de lectura si está disponible, independientemente de que otros subprocesos estén esperando actualmente el bloqueo de lectura. Esta &cita; barging&comillas; el comportamiento puede ser útil en determinadas circunstancias, aunque rompe la equidad. Si desea respetar la configuración de equidad para este bloqueo, use #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS)
que es casi equivalente (también detecta interrupciones).
Si otro subproceso mantiene el bloqueo de escritura, este método devolverá inmediatamente con el valor false
.
Documentación de Java para java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock.tryLock()
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código Project y que se usan según los términos Creative Commons 2.5 Attribution License.
Se aplica a
TryLock(Int64, TimeUnit)
Adquiere el bloqueo de lectura si otro subproceso no mantiene el bloqueo de escritura dentro del tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#interrupt.
[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryLock (long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
Parámetros
- timeout
- Int64
el tiempo de espera del bloqueo de lectura
- unit
- TimeUnit
la unidad de tiempo del argumento de tiempo de espera
Devoluciones
true
si se adquirió el bloqueo de lectura
Implementaciones
- Atributos
Excepciones
si se interrumpe el subproceso actual
si la unidad de tiempo es null
Comentarios
Adquiere el bloqueo de lectura si otro subproceso no mantiene el bloqueo de escritura dentro del tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#interrupt.
Adquiere el bloqueo de lectura si otro subproceso no mantiene el bloqueo de escritura y devuelve inmediatamente con el valor true
. Si este bloqueo se ha establecido para usar una directiva de ordenación justa, no se adquirirá<> un bloqueo <>disponible si algún otro subproceso está esperando el bloqueo. Esto contrasta con el #tryLock()
método . Si desea un tiempo tryLock
que permita la barra en un bloqueo justo, combine los formularios timed y un-timed juntos:
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
Si otro subproceso mantiene el bloqueo de escritura, el subproceso actual se deshabilita con fines de programación de subprocesos y permanece inactivo hasta que se produzca una de las tres cosas:
<ul>
<li>El bloqueo de lectura lo adquiere el subproceso actual; o
<li>Otros subprocesos Subprocesos#interrupciones interrumpen el subproceso actual; o
<li>El tiempo de espera especificado transcurre.
</ul>
Si se adquiere el bloqueo de lectura, se devuelve el valor true
.
Si el subproceso actual:
<ul>
<li>tiene su estado interrumpido establecido en la entrada a este método; o
<li>es Thread#interrupt interrumpida al adquirir el bloqueo de lectura,
<A continuación, InterruptedException
se produce /ul> y se borra el estado interrumpido del subproceso actual.
Si el tiempo de espera especificado transcurre, se devuelve el valor false
. Si el tiempo es menor o igual que cero, el método no esperará en absoluto.
En esta implementación, ya que este método es un punto de interrupción explícito, se da preferencia a responder a la interrupción sobre la adquisición normal o reentrante del bloqueo, y sobre la notificación del tiempo de espera transcurrido.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código Project y que se usan según los términos Creative Commons 2.5 Attribution License.