Langage

ReentrantLock.TryLock Méthode

Définition

Surcharges

Nom Description
TryLock(Int64, TimeUnit)

Acquiert le verrou 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 par thread#interruption.

TryLock()

Acquiert le verrou uniquement s’il n’est pas détenu par un autre thread au moment de l’appel.

TryLock(Int64, TimeUnit)

Acquiert le verrou 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 par 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

le temps d’attente du verrou

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 é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 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 par thread#interruption.

Acquiert le verrou s’il n’est pas conservé par un autre thread et retourne immédiatement avec la valeur true, en définissant le nombre de blocages de verrou 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. 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 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 est acquis, la valeur true est retournée et le nombre de blocages de verrou 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,

</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.ReentrantLock.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 à

TryLock()

Acquiert le verrou 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 était déjà détenu par le thread actuel ; et false sinon

Implémente

Attributs

Remarques

Acquiert le verrou uniquement s’il n’est pas détenu par un autre thread au moment de l’appel.

Acquiert le verrou s’il n’est pas conservé par un autre thread et retourne immédiatement avec la valeur true, en définissant le nombre de blocages de verrou 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. 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.

Java documentation pour java.util.concurrent.locks.ReentrantLock.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 à