Semaphore.TryAcquire 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
TryAcquire() |
Erwirbt eine Genehmigung von diesem Semaphor, nur wenn eine zum Zeitpunkt des Aufrufs verfügbar ist. |
TryAcquire(Int32) |
Erwirbt die angegebene Anzahl von Genehmigungen von diesem Semaphor, nur wenn alle zum Zeitpunkt des Aufrufs verfügbar sind. |
TryAcquire(Int64, TimeUnit) |
Erwirbt eine Genehmigung von diesem Semaphor, wenn eine innerhalb der angegebenen Wartezeit verfügbar ist und der aktuelle Thread nicht thread#interrupt unterbrochen wurde. |
TryAcquire(Int32, Int64, TimeUnit) |
Erwirbt die angegebene Anzahl von Genehmigungen von diesem Semaphor, wenn alle innerhalb der angegebenen Wartezeit verfügbar sind und der aktuelle Thread nicht unterbrochen wurde. |
TryAcquire()
Erwirbt eine Genehmigung von diesem Semaphor, nur wenn eine zum Zeitpunkt des Aufrufs verfügbar ist.
[Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")]
public virtual bool TryAcquire ();
[<Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")>]
abstract member TryAcquire : unit -> bool
override this.TryAcquire : unit -> bool
Gibt zurück
true
wenn eine Genehmigung erworben wurde und false
andernfalls
- Attribute
Hinweise
Erwirbt eine Genehmigung von diesem Semaphor, nur wenn eine zum Zeitpunkt des Aufrufs verfügbar ist.
Ruft eine Genehmigung ab, wenn eine verfügbar ist und sofort mit dem Wert true
zurückgegeben wird, wodurch die Anzahl der verfügbaren Genehmigungen um eins reduziert wird.
Wenn keine Genehmigung verfügbar ist, wird diese Methode sofort mit dem Wert false
zurückgegeben.
Selbst wenn dieses Semaphor auf die Verwendung einer fairen Bestellrichtlinie festgelegt wurde, erhält>< ein Aufruf von tryAcquire()
<em>sofort eine Genehmigung, wenn eins verfügbar ist, unabhängig davon, ob andere Threads derzeit warten. Dies " Barging" Das Verhalten kann unter bestimmten Umständen nützlich sein, auch wenn es die Fairness bricht. Wenn Sie die Fairness-Einstellung berücksichtigen möchten, verwenden #tryAcquire(long, TimeUnit) tryAcquire(0, TimeUnit.SECONDS)
Sie dies fast gleich (es erkennt auch Unterbrechungen).
Java-Dokumentation für java.util.concurrent.Semaphore.tryAcquire()
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Gilt für:
TryAcquire(Int32)
Erwirbt die angegebene Anzahl von Genehmigungen von diesem Semaphor, nur wenn alle zum Zeitpunkt des Aufrufs verfügbar sind.
[Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")]
public virtual bool TryAcquire (int permits);
[<Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")>]
abstract member TryAcquire : int -> bool
override this.TryAcquire : int -> bool
Parameter
- permits
- Int32
Die Anzahl der Genehmigungen für den Erwerb
Gibt zurück
true
wenn die Genehmigungen erworben wurden und false
andernfalls
- Attribute
Ausnahmen
wenn permits
negativ
Hinweise
Erwirbt die angegebene Anzahl von Genehmigungen von diesem Semaphor, nur wenn alle zum Zeitpunkt des Aufrufs verfügbar sind.
Ruft die angegebene Anzahl von Genehmigungen ab, sofern sie verfügbar sind, und gibt sofort mit dem Wert true
zurück, wodurch die Anzahl der verfügbaren Genehmigungen um den angegebenen Betrag reduziert wird.
Wenn nicht genügend Genehmigungen verfügbar sind, wird diese Methode sofort mit dem Wert false
zurückgegeben, und die Anzahl der verfügbaren Genehmigungen ist unverändert.
Selbst wenn dieses Semaphor auf die Verwendung einer fairen Bestellrichtlinie festgelegt wurde, erhält>< ein Aufruf von tryAcquire
<em>sofort eine Genehmigung, wenn eins verfügbar ist, unabhängig davon, ob andere Threads derzeit warten. Dies " Barging" Das Verhalten kann unter bestimmten Umständen nützlich sein, auch wenn es die Fairness bricht. Wenn Sie die Fairness-Einstellung berücksichtigen möchten, verwenden #tryAcquire(int, long, TimeUnit) tryAcquire(permits, 0, TimeUnit.SECONDS)
Sie dies fast gleich (es erkennt auch Unterbrechungen).
Java-Dokumentation für java.util.concurrent.Semaphore.tryAcquire(int)
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Gilt für:
TryAcquire(Int64, TimeUnit)
Erwirbt eine Genehmigung von diesem Semaphor, wenn eine innerhalb der angegebenen Wartezeit verfügbar ist und der aktuelle Thread nicht thread#interrupt unterbrochen wurde.
[Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool
Parameter
- timeout
- Int64
die maximale Wartezeit für eine Genehmigung
- unit
- TimeUnit
die Zeiteinheit des timeout
Arguments
Gibt zurück
true
wenn eine Genehmigung erworben wurde und false
die Wartezeit vor dem Erwerb einer Genehmigung verstrichen ist
- Attribute
Ausnahmen
wenn der aktuelle Thread unterbrochen wird
Hinweise
Erwirbt eine Genehmigung von diesem Semaphor, wenn eine innerhalb der angegebenen Wartezeit verfügbar ist und der aktuelle Thread nicht thread#interrupt unterbrochen wurde.
Ruft eine Genehmigung ab, wenn eine verfügbar ist und sofort mit dem Wert true
zurückgegeben wird, wodurch die Anzahl der verfügbaren Genehmigungen um eins reduziert wird.
Wenn keine Genehmigung verfügbar ist, wird der aktuelle Thread für Threadplanungszwecke deaktiviert und liegt ruhend, bis eines von drei Dingen passiert: <ul><li>Ein anderer Thread ruft die #release
Methode für dieses Semaphor auf, und der aktuelle Thread wird neben einer Genehmigung zugewiesen; oder <li>Einige andere Thread#interrupt unterbricht den aktuellen Thread; oder <li>Die angegebene Wartezeit verstrichen. </ul>
Wenn eine Genehmigung erworben wird, wird der Wert true
zurückgegeben.
Wenn der aktuelle Thread: <ul><li>seinen unterbrochenen Status für den Eintrag in dieser Methode festgelegt hat; oder <li>ist Thread#interrupt unterbrochen, während sie auf das Abrufen einer Genehmigung warten, <wird /ul> ausgelöst InterruptedException
, 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.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Gilt für:
TryAcquire(Int32, Int64, TimeUnit)
Erwirbt die angegebene Anzahl von Genehmigungen von diesem Semaphor, wenn alle innerhalb der angegebenen Wartezeit verfügbar sind und der aktuelle Thread nicht unterbrochen wurde.
[Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (int permits, long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool
Parameter
- permits
- Int32
Die Anzahl der Genehmigungen für den Erwerb
- timeout
- Int64
die maximale Wartezeit für die Genehmigungen
- unit
- TimeUnit
die Zeiteinheit des timeout
Arguments
Gibt zurück
true
wenn alle Genehmigungen erworben wurden und false
die Wartezeit vor dem Erwerb aller Genehmigungen verstrichen ist
- Attribute
Ausnahmen
wenn der aktuelle Thread unterbrochen wird
wenn permits
negativ
Hinweise
Erwirbt die angegebene Anzahl von Genehmigungen von diesem Semaphor, wenn alle innerhalb der angegebenen Wartezeit verfügbar sind und der aktuelle Thread nicht unterbrochen wurde.
Ruft die angegebene Anzahl von Genehmigungen ab, wenn sie verfügbar sind und sofort mit dem Wert true
zurückgegeben wird, wodurch die Anzahl der verfügbaren Genehmigungen um den angegebenen Betrag reduziert wird.
Wenn unzureichende Genehmigungen verfügbar sind, wird der aktuelle Thread für Threadplanungszwecke deaktiviert und liegt ruhend, bis eines von drei Dingen geschieht: ul>li Ein anderer Thread ruft eine der #release() release
Methoden für diesen Semaphor auf, und der aktuelle Thread wird neben der Zuweisung von Genehmigungen zugewiesen, und die Anzahl der verfügbaren Genehmigungen erfüllt diese Anforderung; oder <li>einige andere Thread#interrupt unterbricht den aktuellen Thread; oder <li>><<Die angegebene Wartezeit verstrichen. </ul>
Wenn die Genehmigungen erworben werden, wird der Wert true
zurückgegeben.
Wenn der aktuelle Thread: <ul><li>seinen unterbrochenen Status für den Eintrag in dieser Methode festgelegt hat; oder <li>ist Thread#interrupt unterbrochen, während sie auf das Abrufen der Genehmigungen warten, <wird /ul> ausgelöst InterruptedException
, und der unterbrochene Status des aktuellen Threads wird gelöscht. Alle Genehmigungen, die diesem Thread zugewiesen werden sollen, werden stattdessen anderen Threads zugewiesen, die versuchen, Genehmigungen zu erwerben, als ob die Genehmigungen durch einen Aufruf #release()
zur Verfügung gestellt wurden.
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. Alle Genehmigungen, die diesem Thread zugewiesen werden sollen, werden stattdessen anderen Threads zugewiesen, die versuchen, Genehmigungen zu erwerben, als ob die Genehmigungen durch einen Aufruf #release()
zur Verfügung gestellt wurden.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.