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:
 
<sourcesyntaxhighlight lang="java">
class Chiamato extends Thread
{ public void run(){
Riga 20:
}
}
</syntaxhighlight>
</source>
 
Poi, eseguo il thread.
<sourcesyntaxhighlight lang="java">
public static void main(String argc[]){
Chiamato p = new Chiamato();
Riga 33:
}
}
</syntaxhighlight>
</source>
 
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'''
<sourcesyntaxhighlight lang="java">
synchronized void muovi(String nome,String direzione){
...
}
</syntaxhighlight>
</source>
 
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.
<sourcesyntaxhighlight lang="java">
public volatile boolean pronto=true;
</syntaxhighlight>
</source>
[[Categoria:Java|Threads]]
{{Avanzamento|75%|6 giugno 2010}}