Partager via


ReentrantReadWriteLock.ReentrantWriteLock.TryLock Méthode

Définition

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.

Documentation Java pour java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock(long, java.util.concurrent.TimeUnit).

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 à