Java/Multithreading: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Metto il box completo |
m Update syntaxhighlight tags - remove use of deprecated <source> tags |
||
Riga 12:
Creo una classe ''Chiamato'' che estende Thread:
<
class Chiamato extends Thread
{ public void run(){
Riga 20:
}
}
</syntaxhighlight>
Poi, eseguo il thread.
<
public static void main(String argc[]){
Chiamato p = new Chiamato();
Riga 33:
}
}
</syntaxhighlight>
Al contrario del solito, la funzione run ritorna subito, ma il processo (l'oggetto istanziato) resta attivo.
Riga 61:
===Metodi synchronized===
Innanzitutto è possibile indicare che un metodo non può essere invocato simultaneamente da più thread con la parola chiave '''synchronized'''
<
synchronized void muovi(String nome,String direzione){
...
}
</syntaxhighlight>
in questo modo se un thread chiama il metodo quando questo sta già venendo eseguito da un altro thread viene messo in attesa finché l'esecuzione termina.
Riga 79:
Questo fa sì che il programmatore creda di avere modificato una variabile ma alcuni thread non ne vedono immediatamente il valore cambiato.
Per disattivare questo meccanismo bisogna utilizzare la parola chiave '''volatile''', che indica alla JVM di non ottimizzarla rendendone la manipolazione effettivamente atomica.
<
public volatile boolean pronto=true;
</syntaxhighlight>
[[Categoria:Java|Threads]]
{{Avanzamento|75%|6 giugno 2010}}
|