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