ILock.TryLock Método

Definición

Sobrecargas

Nombre Description
TryLock()

Adquiere el bloqueo solo si es libre en el momento de la invocación.

TryLock(Int64, TimeUnit)

Adquiere el bloqueo si está libre dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

TryLock()

Adquiere el bloqueo solo si es libre en el momento de la invocación.

[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : unit -> bool

Devoluciones

true es si se adquirió el bloqueo y false , de lo contrario,

Atributos

Comentarios

Adquiere el bloqueo solo si es libre en el momento de la invocación.

Adquiere el bloqueo si está disponible y devuelve inmediatamente con el valor true. Si el bloqueo no está disponible, este método devolverá inmediatamente con el valor false.

Una expresión de uso típica para este método sería:

{@code
            Lock lock = ...;
            if (lock.tryLock()) {
              try {
                // manipulate protected state
              } finally {
                lock.unlock();
              }
            } else {
              // perform alternative actions
            }}

Este uso garantiza que el bloqueo se desbloquea si se adquirió y no intenta desbloquear si no se adquirió el bloqueo.

Documentación de Java para java.util.concurrent.locks.Lock.tryLock().

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.

Se aplica a

TryLock(Int64, TimeUnit)

Adquiere el bloqueo si está libre dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock(long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool

Parámetros

time
Int64

tiempo máximo para esperar el bloqueo

unit
TimeUnit

la unidad de tiempo del time argumento

Devoluciones

true si se adquirió el bloqueo y false si el tiempo de espera transcurrido antes de adquirir el bloqueo

Atributos

Excepciones

si se interrumpe el subproceso actual al adquirir el bloqueo (y se admite la interrupción de la adquisición de bloqueos)

Comentarios

Adquiere el bloqueo si está libre dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

Si el bloqueo está disponible, este método devuelve inmediatamente con el valor true. Si el bloqueo no está disponible, 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 lo adquiere el subproceso actual; o >li<Otros subprocesos Thread#interrupt interrumpen el subproceso actual y se admite la interrupción de la adquisición de bloqueo; o >li<El tiempo de espera especificado transcurre >/ul<><>

Si se adquiere el bloqueo, 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 y se admite la interrupción de la adquisición de bloqueo, </ul >InterruptedException se produce y se borra el estado interrumpido del subproceso actual.

Si transcurre el tiempo de espera especificado, se devuelve el valor false . Si el tiempo es menor o igual que cero, el método no esperará en absoluto.

<b>Consideraciones de< implementación/b>

Es posible que la capacidad de interrumpir una adquisición de bloqueos en algunas implementaciones no sea posible y, si es posible, puede ser una operación costosa. El programador debe tener en cuenta que esto puede ser el caso. Una implementación debe documentar cuándo es el caso.

Una implementación puede favorecer la respuesta a una interrupción de la devolución del método normal o notificar un tiempo de espera.

Una Lock implementación puede detectar el uso erróneo del bloqueo, como una invocación que provocaría interbloqueo y podría producir una excepción (desactivada) en tales circunstancias. La implementación debe documentar Lock las circunstancias y el tipo de excepción.

Documentación de Java para java.util.concurrent.locks.Lock.tryLock(long, java.util.concurrent.TimeUnit).

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.

Se aplica a