Linguaggio

Object.Wait Metodo

Definizione

Overload

Nome Descrizione
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

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

Eccezioni

se il thread che chiama questo metodo non è il proprietario del monitoraggio dell'oggetto.

se il thread corrente è stato interrotto. Lo stato interrotto del thread corrente verrà cancellato prima che venga generata l'eccezione.

Commenti

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

In tutti i confronti, questo metodo si comporta come se wait(0L, 0) fosse stato chiamato. Per informazioni dettagliate, vedere la specifica del #wait(long, int) metodo .

per java.lang.Object.wait().

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Vedi anche

Si applica a

Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

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

Parametri

timeoutMillis
Int64

tempo massimo di attesa, espresso in millisecondi

Attributi

Eccezioni

se il thread che chiama questo metodo non è il proprietario del monitoraggio dell'oggetto.

se il thread corrente è stato interrotto. Lo stato interrotto del thread corrente verrà cancellato prima che venga generata l'eccezione.

Commenti

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

In tutti i confronti, questo metodo si comporta come se wait(timeoutMillis, 0) fosse stato chiamato. Per informazioni dettagliate, vedere la specifica del #wait(long, int) metodo .

per java.lang.Object.wait(long).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Vedi anche

Si applica a

Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

[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

Parametri

timeoutMillis
Int64

tempo massimo di attesa, espresso in millisecondi

nanos
Int32

tempo aggiuntivo, in nanosecondi, compreso nell'intervallo compreso tra 0 e 999999

Attributi

Eccezioni

se millis , nanos o nanos > 999999.

se il thread che chiama questo metodo non è il proprietario del monitoraggio dell'oggetto.

se il thread corrente è stato interrotto. Lo stato interrotto del thread corrente verrà cancellato prima che venga generata l'eccezione.

Commenti

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo<> una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

Il thread corrente deve essere proprietario del blocco di monitoraggio di questo oggetto. Vedere il #notify notify metodo per una descrizione dei modi in cui un thread può diventare il proprietario di un blocco di monitoraggio.

Questo metodo fa sì che il thread corrente (indicato qui come <var>T</var>) si inserisca nell'attesa impostata per questo oggetto e quindi rinunci a tutte le attestazioni di sincronizzazione per questo oggetto. Si noti che solo i blocchi su questo oggetto vengono abbandonati; gli altri oggetti in cui il thread corrente può essere sincronizzato rimangono bloccati durante l'attesa del thread.

Il thread var T/var< diventa quindi disabilitato a scopo di pianificazione dei thread e rimane inattivo fino a quando non si verifica uno dei seguenti: >ul<>li<Altri thread richiamano il > metodo per questo oggetto e il thread <var>Tnotify/var< viene scelto arbitrariamente come thread da risvegliare.><> <li>Altri thread richiamano il notifyAll metodo per questo oggetto. <li>Altri thread Thread#interrupt() interrompono il thread <var>T</var>. <li>La quantità specificata di tempo reale è trascorsa, più o meno. La quantità di tempo reale, in nanosecondi, viene data dall'espressione 1000000 * timeoutMillis + nanos. Se timeoutMillis e nanos sono entrambi zero, il tempo reale non viene preso in considerazione e il thread attende fino a quando non viene risvegliato da una delle altre cause. <li>Thread <var>T</var> viene risvegliato spuriosamente. Vedere di seguito. </ul>

Il thread <var>T</var> viene quindi rimosso dal set di attesa per questo oggetto e riabilitato per la pianificazione del thread. Compete in modo consueto con altri thread per il diritto di sincronizzare sull'oggetto; una volta recuperato il controllo dell'oggetto, tutte le attestazioni di sincronizzazione sull'oggetto vengono ripristinate allo status quo ante, ovvero alla situazione a partire dal momento in cui il wait metodo è stato richiamato. Il thread <var>T</var> restituisce quindi dalla chiamata del wait metodo . Pertanto, in caso di restituzione dal wait metodo, lo stato di sincronizzazione dell'oggetto e del thread T è esattamente come era quando wait il metodo è stato richiamato.

Un thread può riattivarsi senza ricevere notifiche, interruzioni o timeout, una cosiddetta <>riattivazione< em spuriosa/em>. Anche se questa situazione si verifica raramente in pratica, le applicazioni devono sorvegliarla testando la condizione che dovrebbe aver causato il risveglio del thread e continuando ad attendere se la condizione non è soddisfatta. Vedere l'esempio seguente.

Per altre informazioni su questo argomento, vedere la sezione 14.2, "Code di condizione", in Brian Goetz e altri' <em> Java concorrenza in Practice</em> (Addison-Wesley, 2006) o Item 69 in Joshua Bloch's<> Effective Java, Second Edition</em> (Addison-Wesley, 2008).

Se il thread corrente è java.lang.Thread#interrupt() interrotto da qualsiasi thread prima o mentre è in attesa, viene generata un'eccezione InterruptedException . Lo <stato>/em< interrotto em>del thread corrente viene cancellato quando viene generata questa eccezione. Questa eccezione non viene generata finché lo stato di blocco di questo oggetto non viene ripristinato come descritto in precedenza.

per java.lang.Object.wait(long, int).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Vedi anche

Si applica a