Object.Wait Methode

Definition

Überlädt

Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel durch em benachrichtigen/em> oder <em>interrupted</em>.<><

Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel durch em benachrichtigen/em> oder <em>interrupted</em>.<><

[Android.Runtime.Register("wait", "()V", "")]
public void Wait ();
[<Android.Runtime.Register("wait", "()V", "")>]
member this.Wait : unit -> unit
Attribute

Ausnahmen

, wenn der Thread, der diese Methode aufruft, nicht besitzer des Monitors dieses Objekts ist.

, wenn der aktuelle Thread unterbrochen wurde. Die unterbrochene status des aktuellen Threads wird gelöscht, bevor die Ausnahme ausgelöst wird.

Hinweise

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel durch em benachrichtigen/em> oder <em>interrupted</em>.<><

In jeder Hinsicht verhält sich diese Methode so, als wäre wait(0L, 0) sie aufgerufen worden. Weitere Informationen finden Sie in der Spezifikation der #wait(long, int) -Methode.

Java-Dokumentation für java.lang.Object.wait().

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Weitere Informationen

Gilt für:

Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

[Android.Runtime.Register("wait", "(JI)V", "")]
public void Wait (long timeoutMillis, int nanos);
[<Android.Runtime.Register("wait", "(JI)V", "")>]
member this.Wait : int64 * int -> unit

Parameter

timeoutMillis
Int64

die maximale Wartezeit in Millisekunden

nanos
Int32

zusätzliche Zeit, in Nanosekunden, im Bereich 0-999999 inklusive

Attribute

Ausnahmen

nanos , oder .nanos > 999999millis

, wenn der Thread, der diese Methode aufruft, nicht besitzer des Monitors dieses Objekts ist.

, wenn der aktuelle Thread unterbrochen wurde. Die unterbrochene status des aktuellen Threads wird gelöscht, bevor die Ausnahme ausgelöst wird.

Hinweise

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

Der aktuelle Thread muss die Monitorsperre dieses Objekts besitzen. #notify notify Eine Beschreibung der Möglichkeiten, wie ein Thread Besitzer einer Monitorsperre werden kann, finden Sie in der -Methode.

Diese Methode bewirkt, dass sich der aktuelle Thread (hier als <var>T</var> bezeichnet) im Wartesatz für dieses Objekt platziert und dann alle Synchronisierungsansprüche für dieses Objekt aufgibt. Beachten Sie, dass nur die Sperren für dieses Objekt aufgehoben werden. alle anderen Objekte, auf denen der aktuelle Thread synchronisiert werden kann, bleiben gesperrt, während der Thread wartet.

Thread <var>T</var> wird dann für Threadplanungszwecke deaktiviert und bleibt ruhen, bis einer der folgenden Auftritte auftritt: <ul<>li>Ein anderer Thread ruft die notify Methode für dieses Objekt auf, und Thread <var wird>>< zufällig als der zu weckende Thread ausgewählt. <li>Ein anderer Thread ruft die notifyAll -Methode für dieses Objekt auf. <li>Ein anderer Thread Thread#interrupt() unterbricht Thread <var>T</var>. <li>Die angegebene Menge an Echtzeit ist mehr oder weniger verstrichen. Die Echtzeitmenge in Nanosekunden wird durch den Ausdruck 1000000 * timeoutMillis + nanosangegeben. Wenn timeoutMillis und nanos beide 0 sind, wird die Echtzeit nicht berücksichtigt, und der Thread wartet, bis er von einer der anderen Ursachen ausgelöst wird. <li>Thread <var>T</var> wird spurlos geweckt. (Siehe unten.) </Ul>

Der Thread <var>T</var> wird dann aus dem Wartesatz für dieses Objekt entfernt und für die Threadplanung wieder aktiviert. Es konkurriert in der üblichen Weise mit anderen Threads um das Recht, das Objekt zu synchronisieren; sobald es die Kontrolle über das Objekt wiedererlangt hat, werden alle Synchronisierungsansprüche für das Objekt in der status quo ante wiederhergestellt, d. h. in der Situation zum Zeitpunkt des Aufrufs der wait Methode. Thread <var>T</var> gibt dann vom Aufruf der wait -Methode zurück. Daher ist der wait Synchronisierungszustand des Objekts und des Threads T bei der Rückgabe von der -Methode genau so, wie er beim Aufrufen der wait Methode war.

Ein Thread kann ohne Benachrichtigung, Unterbrechung oder Timeout aktiviert werden, ein sogenanntes <unscheiniges>Reaktivieren<.> Dies tritt in der Praxis zwar selten auf, aber Anwendungen müssen sich davor schützen, indem sie auf die Bedingung testen, die dazu hätte führen müssen, dass der Thread aktiviert wurde, und weiterhin warten, wenn die Bedingung nicht erfüllt ist. Betrachten Sie das folgende Beispiel.

Weitere Informationen zu diesem Thema finden Sie unter Abschnitt 14.2, "Condition Queues", in Brian Goetz and others' <em>Java Concurrency in Practice</em> (Addison-Wesley, 2006) oder Item 69 in Joshua Bloch's <em>Effective Java, Second Edition</em> (Addison-Wesley, 2008).

Wenn der aktuelle Thread java.lang.Thread#interrupt() ist, der vor oder während des Wartens von einem beliebigen Thread unterbrochen wird, wird ein InterruptedException ausgelöst. >Die <unterbrochene status</em> des aktuellen Threads wird gelöscht, wenn diese Ausnahme ausgelöst wird. Diese Ausnahme wird erst ausgelöst, wenn die Sperre status dieses Objekts wie oben beschrieben wiederhergestellt wurde.

Java-Dokumentation für java.lang.Object.wait(long, int).

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Weitere Informationen

Gilt für:

Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

[Android.Runtime.Register("wait", "(J)V", "")]
public void Wait (long timeoutMillis);
[<Android.Runtime.Register("wait", "(J)V", "")>]
member this.Wait : int64 -> unit

Parameter

timeoutMillis
Int64

die maximale Wartezeit in Millisekunden

Attribute

Ausnahmen

, wenn millis .

, wenn der Thread, der diese Methode aufruft, nicht besitzer des Monitors dieses Objekts ist.

, wenn der aktuelle Thread unterbrochen wurde. Die unterbrochene status des aktuellen Threads wird gelöscht, bevor die Ausnahme ausgelöst wird.

Hinweise

Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert wird, in der Regel, indem <er>benachrichtigt</em> oder <em>interrupted</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

In jeder Hinsicht verhält sich diese Methode so, als wäre wait(timeoutMillis, 0) sie aufgerufen worden. Weitere Informationen finden Sie in der Spezifikation der #wait(long, int) -Methode.

Java-Dokumentation für java.lang.Object.wait(long).

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.

Weitere Informationen

Gilt für: