Langue

ReentrantReadWriteLock.ReentrantReadLock.TryLock Méthode

Définition

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.

Java documentation pour java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock.tryLock(long, java.util.concurrent.TimeUnit).

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 à