ReentrantReadWriteLock.ReentrantWriteLock.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
| TryLock() |
Acquiert le verrou d’écriture uniquement s’il n’est pas détenu par un autre thread au moment de l’appel. |
| TryLock(Int64, TimeUnit) |
Acquiert le verrou d’écriture s’il 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 d’écriture uniquement s’il 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 était libre et a été acquis par le thread actuel, ou si le verrou d’écriture était déjà détenu par le thread actuel ; et false sinon.
Implémente
- Attributs
Remarques
Acquiert le verrou d’écriture uniquement s’il n’est pas détenu par un autre thread au moment de l’appel.
Acquiert le verrou d’écriture si ni le verrou de lecture ni le verrou d’écriture ne sont conservés par un autre thread et retourne immédiatement avec la valeur true, en définissant le nombre de conservations de verrou d’écriture sur un. 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 s’il est disponible, que d’autres threads attendent actuellement le verrou d’écriture. 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 thread actuel contient déjà ce verrou, le nombre de conservations est incrémenté par un et la méthode retourne true.
Si le verrou est conservé par un autre thread, cette méthode retourne immédiatement avec la valeur false.
Documentation Java pour java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock().
Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.
S’applique à
TryLock(Int64, TimeUnit)
Acquiert le verrou d’écriture s’il 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 d’écriture
- unit
- TimeUnit
unité de temps de l’argument timeout
Retours
true si le verrou était libre et a été acquis par le thread actuel, ou si le verrou d’écriture était déjà détenu par le thread actuel ; et false si le temps d’attente s’est écoulé avant que le verrou puisse être acquis.
Implémente
- Attributs
Exceptions
si le thread actuel est interrompu
si l’unité de temps est null
Remarques
Acquiert le verrou d’écriture s’il 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 d’écriture si ni le verrou de lecture ni le verrou d’écriture ne sont conservés par un autre thread et retourne immédiatement avec la valeur true, en définissant le nombre de conservations de verrou d’écriture sur un. 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 d’écriture. 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 thread actuel contient déjà ce verrou, le nombre de conservations est incrémenté par un et la méthode retourne true.
Si le verrou 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 d’écriture 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 d’écriture est acquis, la valeur true est retournée et le nombre de blocages de verrou d’écriture est défini sur un.
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 d’écriture,
</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 le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.