ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Basi | Espressioni | Comandi | Classi | Ereditarieta | Eccezioni | Thread | Utilita | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

Thread
Thread
Creazione
Stati
Runnable
Problema!
Perchè?
synchronized
Semafori
Osservazioni
wait notify
Attenzione
Stallo

<<< wait notify >>>
Se un thread, mentre accede a un metodo sincronizzato, si accorge di non poter finire il lavoro?
class Stack {
   synchronized void push(int x) {
      if(top>stack.length)
        // che faccio ???
   }
}
Posso uscire senza fare niente oppure sollevare una eccezione
La cosa migliore sarebbe aspettare che qualcuno faccia una pop
La wait() e la notify() fanno parte del linguaggio
sono metodi di Object.
wait() ha senso solo in un metodo sincronizzato
Sospende il thread corrente e lo pone in attesa
class Stack {
   synchronized void push(int x) {
      while(top>stack.length)
        wait();
        ...
   }
   synchronized void pop(int x) {
       int r = stack[--top];
       notify();
       return r;
   }
}
il thread viene riattivato non appena qualcuno effettua una notify() sull'oggetto.
un thread riattivato accede all'oggetto dal punto in cui ha fatto wait()
ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com