ILock.TryLock Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surcharges
| Nom | Description |
|---|---|
| TryLock() |
Acquiert le verrou uniquement s’il est libre au moment de l’appel. |
| TryLock(Int64, TimeUnit) |
Acquiert le verrou s’il est libre dans le délai d’attente donné et que le thread actuel n’a pas été interrompu thread#interruption. |
TryLock()
Acquiert le verrou uniquement s’il est libre au moment de l’appel.
[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
Retours
true si le verrou a été acquis et false sinon
- Attributs
Remarques
Acquiert le verrou uniquement s’il est libre au moment de l’appel.
Acquiert le verrou s’il est disponible et retourne immédiatement avec la valeur true. Si le verrou n’est pas disponible, cette méthode retourne immédiatement avec la valeur false.
Un idiome d’utilisation classique pour cette méthode serait :
{@code
Lock lock = ...;
if (lock.tryLock()) {
try {
// manipulate protected state
} finally {
lock.unlock();
}
} else {
// perform alternative actions
}}
Cette utilisation garantit que le verrou est déverrouillé s’il a été acquis et n’essaie pas de déverrouiller si le verrou n’a pas été acquis.
Java documentation pour java.util.concurrent.locks.Lock.tryLock().
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
S’applique à
TryLock(Int64, TimeUnit)
Acquiert le verrou s’il est libre dans le délai d’attente donné et que le thread actuel n’a pas été interrompu thread#interruption.
[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
Paramètres
- time
- Int64
durée maximale d’attente du verrou
- unit
- TimeUnit
unité de temps de l’argument time
Retours
true si le verrou a été acquis et false si le temps d’attente s’est écoulé avant l’acquisition du verrou
- Attributs
Exceptions
si le thread actuel est interrompu lors de l’acquisition du verrou (et que l’interruption de l’acquisition de verrou est prise en charge)
Remarques
Acquiert le verrou s’il est libre dans le délai d’attente donné et que le thread actuel n’a pas été interrompu thread#interruption.
Si le verrou est disponible, cette méthode retourne immédiatement avec la valeur true. Si le verrou n’est pas disponible, le thread actuel devient désactivé à des fins de planification de threads et se trouve dormant jusqu’à ce que l’une des trois choses se produisent : ul<li Le verrou est acquis par le thread actuel ; ou >li<Un autre thread thread#interruption interrompt le thread actuel, et l’interruption de l’acquisition de verrous est prise en charge ; ou >li<Le temps d’attente spécifié s’écoule >/ul<><>
Si le verrou est acquis, la valeur true est retournée.
Si le thread actuel : <ul><li>a son état interrompu défini sur l’entrée de cette méthode ; ou <li>is Thread#interruption lors de l’acquisition du verrou, et l’interruption de l’acquisition de verrou est prise en charge, </ul> est InterruptedException levée et l’état interrompu du thread actuel est effacé.
Si le temps d’attente spécifié s’écoule, la valeur false est retournée. Si le temps est inférieur ou égal à zéro, la méthode n’attend pas du tout.
<b>Considérations relatives< à l’implémentation/b>
La possibilité d’interrompre une acquisition de verrous dans certaines implémentations peut ne pas être possible, et si possible peut être une opération coûteuse. Le programmeur doit savoir que c’est peut-être le cas. Une implémentation doit documenter quand c’est le cas.
Une implémentation peut favoriser la réponse à une interruption par rapport à un retour de méthode normal ou à signaler un délai d’expiration.
Une Lock implémentation peut être en mesure de détecter une utilisation erronée du verrou, telle qu’un appel qui provoquerait un blocage, et peut lever une exception (non cochée) dans de telles circonstances. Les circonstances et le type d’exception doivent être documentés par cette Lock implémentation.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.