ReentrantReadWriteLock.ReentrantReadLock.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 de lecture uniquement si le verrou d’écriture n’est pas détenu par un autre thread au moment de l’appel. |
| TryLock(Int64, TimeUnit) |
Acquiert le verrou de lecture si le verrou d’écriture n’est pas conservé par un autre thread dans le délai d’attente donné et que le thread actuel n’a pas été interrompu thread#interruption. |
TryLock()
Acquiert le verrou de lecture uniquement si le verrou d’écriture n’est pas détenu par un autre thread au moment de l’appel.
[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
Retours
true si le verrou de lecture a été acquis
Implémente
- Attributs
Remarques
Acquiert le verrou de lecture uniquement si le verrou d’écriture n’est pas détenu par un autre thread au moment de l’appel.
Acquiert le verrou de lecture si le verrou d’écriture n’est pas conservé par un autre thread et retourne immédiatement avec la valeur true. Même lorsque ce verrou a été défini pour utiliser une stratégie de classement équitable, un appel à tryLock()<em>will</em> acquiert immédiatement le verrou de lecture s’il est disponible, que d’autres threads attendent actuellement le verrou de lecture. Ce " barging" le comportement peut être utile dans certaines circonstances, même s’il interrompt l’équité. Si vous souhaitez respecter le paramètre d’équité pour ce verrou, utilisez #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) ce qui est presque équivalent (il détecte également l’interruption).
Si le verrou d’écriture est conservé par un autre thread, cette méthode retourne immédiatement avec la valeur false.
Java documentation pour java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock.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 de lecture si le verrou d’écriture n’est pas conservé par un autre thread 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")]
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
Paramètres
- timeout
- Int64
délai d’attente du verrou de lecture
- unit
- TimeUnit
unité de temps de l’argument timeout
Retours
true si le verrou de lecture a été acquis
Implémente
- Attributs
Exceptions
si le thread actuel est interrompu
si l’unité de temps est null
Remarques
Acquiert le verrou de lecture si le verrou d’écriture n’est pas conservé par un autre thread dans le délai d’attente donné et que le thread actuel n’a pas été interrompu thread#interruption.
Acquiert le verrou de lecture si le verrou d’écriture n’est pas conservé par un autre thread et retourne immédiatement avec la valeur true. Si ce verrou a été défini pour utiliser une stratégie de classement équitable, un em de verrouillage<> disponible ne sera pas</em> acquis si d’autres threads attendent le verrou. Cela diffère de la #tryLock() méthode. Si vous souhaitez un chronométrage tryLock qui autorise le barging sur un verrou équitable, combinez les formulaires chronométrés et non chronométrés ensemble :
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
Si le verrou d’écriture est conservé par un autre thread, 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 de lecture est acquis par le thread actuel ; ou
<li>Un autre thread thread#interruption interrompt le thread actuel ; ou
<li>Le temps d’attente spécifié s’écoule.
</ul>
Si le verrou de lecture est acquis, la valeur true est retournée.
Si le thread actuel :
<ul>
<li>a son état interrompu défini lors de l’entrée à cette méthode ; ou
<li>is Thread#interruption lors de l’acquisition du verrou de lecture,
</ul> est ensuite 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.
Dans cette implémentation, étant donné que cette méthode est un point d’interruption explicite, la préférence est donnée pour répondre à l’interruption par rapport à l’acquisition normale ou reentrant du verrou, et à signaler l’expiration du temps d’attente.
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.