ReentrantLock.TryLock Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| Name | Beschreibung |
|---|---|
| TryLock(Int64, TimeUnit) |
Erwirbt die Sperre, wenn sie nicht von einem anderen Thread innerhalb der angegebenen Wartezeit gehalten wird und der aktuelle Thread nicht unterbrochen wurde. |
| TryLock() |
Erwirbt die Sperre nur, wenn sie zum Zeitpunkt des Aufrufs nicht von einem anderen Thread gehalten wird. |
TryLock(Int64, TimeUnit)
Erwirbt die Sperre, wenn sie nicht von einem anderen Thread innerhalb der angegebenen Wartezeit gehalten wird und der aktuelle Thread nicht unterbrochen wurde.
[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
Parameter
- timeout
- Int64
die Zeit, bis die Sperre gewartet wird
- unit
- TimeUnit
die Zeiteinheit des Timeoutarguments
Gibt zurück
true wenn die Sperre frei war und vom aktuellen Thread erworben wurde oder die Sperre bereits vom aktuellen Thread gehalten wurde; und false wenn die Wartezeit vor dem Erwerb der Sperre abgelaufen ist
Implementiert
- Attribute
Ausnahmen
wenn der aktuelle Thread unterbrochen wird
wenn die Zeiteinheit null ist
Hinweise
Erwirbt die Sperre, wenn sie nicht von einem anderen Thread innerhalb der angegebenen Wartezeit gehalten wird und der aktuelle Thread nicht unterbrochen wurde.
Ruft die Sperre ab, wenn sie nicht von einem anderen Thread gehalten wird und sofort mit dem Wert truezurückgegeben wird, wobei die Sperre auf eine festgelegt wird. Wenn diese Sperre auf die Verwendung einer Fair-Order-Richtlinie festgelegt wurde, wird eine verfügbare Lock <em>nicht</em> abgerufen, wenn andere Threads auf die Sperre warten. Dies ist im Gegensatz zur #tryLock() Methode. Wenn Sie eine zeitgesteuerte tryLock Sperre wünschen, die das Sperren auf einer fairen Sperre zulässt, kombinieren Sie die zeitgesteuerten und nicht zeitgesteuerten Formulare zusammen:
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
Wenn der aktuelle Thread diese Sperre bereits enthält, wird die Aufbewahrungsanzahl um eine erhöht, und die Methode gibt zurück true.
Wenn die Sperre von einem anderen Thread gehalten wird, wird der aktuelle Thread für Threadplanungszwecke deaktiviert und liegt ruhend, bis eines von drei Dingen passiert:
<Ul>
<li>Die Sperre wird vom aktuellen Thread erworben oder
<li>Ein anderer Threadthread#interrupt unterbricht den aktuellen Thread; oder
<li>Die angegebene Wartezeit verstrichen
</ul>
Wenn die Sperre abgerufen wird, wird der Wert true zurückgegeben, und die Sperrsperre wird auf eine festgelegt.
Wenn der aktuelle Thread:
<Ul>
<li>hat seinen unterbrochenen Status für den Eintrag in diese Methode festgelegt; oder
<li>ist Thread#interrupt unterbrochen beim Abrufen der Sperre,
</ul> wird dann InterruptedException ausgelöst, und der unterbrochene Status des aktuellen Threads wird gelöscht.
Wenn die angegebene Wartezeit verstrichen ist, wird der Wert false zurückgegeben. Wenn die Zeit kleiner als oder gleich 0 ist, wartet die Methode gar nicht.
Bei dieser Implementierung, da diese Methode ein expliziter Unterbrechungspunkt ist, wird bevorzugt, auf den Interrupt gegenüber normaler oder erneuter Übernahme der Sperre zu reagieren und den Ablauf der Wartezeit zu melden.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Gilt für:
TryLock()
Erwirbt die Sperre nur, wenn sie zum Zeitpunkt des Aufrufs nicht von einem anderen Thread gehalten wird.
[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
Gibt zurück
truewenn die Sperre frei war und vom aktuellen Thread erworben wurde oder die Sperre bereits vom aktuellen Thread gehalten wurde; andernfalls false
Implementiert
- Attribute
Hinweise
Erwirbt die Sperre nur, wenn sie zum Zeitpunkt des Aufrufs nicht von einem anderen Thread gehalten wird.
Ruft die Sperre ab, wenn sie nicht von einem anderen Thread gehalten wird und sofort mit dem Wert truezurückgegeben wird, wobei die Sperre auf eine festgelegt wird. Selbst wenn diese Sperre auf die Verwendung einer Richtlinie für eine faire Reihenfolge festgelegt wurde, erhälttryLock()< ein Aufruf von ><em>die Sperre sofort, wenn sie verfügbar ist, unabhängig davon, ob andere Threads derzeit auf die Sperre warten. Dies " Barging" Das Verhalten kann unter bestimmten Umständen nützlich sein, auch wenn es die Fairness bricht. Wenn Sie die Fairnesseinstellung für diese Sperre berücksichtigen möchten, verwenden #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) Sie dies fast gleich (es erkennt auch Unterbrechungen).
Wenn der aktuelle Thread diese Sperre bereits enthält, wird die Aufbewahrungsanzahl um eine erhöht, und die Methode gibt zurück true.
Wenn die Sperre von einem anderen Thread gehalten wird, wird diese Methode sofort mit dem Wert falsezurückgegeben.
Java Dokumentation für java.util.concurrent.locks.ReentrantLock.tryLock().
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.