<< Chapter < Page | Chapter >> Page > |
Un thread (di controllo) è una lista di istruzioni eseguite sequenzialmente da un programma. I thread di un programmacondividono uno stesso spazio di indirizzamento. Pur avendo stack e variabili locali separate, condividono le variabiliglobali. I thread sono "leggeri", nel senso che la creazione, distruzione e sincronizzazione sono relativamente economichegrazie alla condivisione dello spazio di indirizzamento. Le ragioni per organizzare un programma in un certo numero dithread possono essere molteplici:
stampa()
sull'oggetto
cl
della classe
Classe1
.
class Classe1 {
void stampa() {for (int i=0; i<100; i++) println("yep");
}}
void setup() {Classe1 cl = new Classe1();
cl.stampa();}
Il flusso di elaborazione si può rappresentare graficamente
con il diagramma di attivazione di
[link] , il
quale presenta evidentemente un singolo thread.
Se invece la classe viene realizzata come
estensione della classe
Thread
, allora è possibile procedere
all'attivazione di un thread secondario mediante invocazionedel metodo
start()
. Il codice va riscritto come
class Classe2 extends Thread{
void run() {for (int i=0; i<100; i++) println("yep");
}}
void setup() {Classe2 cl = new Classe2();
cl.start();}
Si noti che il metodo
stampa()
ora si chiama
run()
. Il metodo
start()
esiste
nelle superclassi di
Classe2
(nella classe
Thread
, e si occupa dell'invocazione del metodo
run()
. Questa volta il flusso di elaborazione,
riportato in
[link] presenta due thread.
Runnable
di
Java. E' questa modalità che bisogna usare se si vuoleattivare un nuovo thread su un oggetto di una classe che è
già dichiarata come estensione di un'altra classe.Notification Switch
Would you like to follow the 'Programmazione di artefatti interattivi' conversation and receive update notifications?