Freigeben über


Semaphore.TryAcquire Methode

Definition

Ü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 truezurü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 falsezurü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 truezurü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 truezurü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.

Java-Dokumentation für java.util.concurrent.Semaphore.tryAcquire(long, java.util.concurrent.TimeUnit).

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 truezurü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.

Java-Dokumentation für java.util.concurrent.Semaphore.tryAcquire(int, long, java.util.concurrent.TimeUnit).

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: