Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela...
-
Upload
rosannah-conti -
Category
Documents
-
view
218 -
download
0
Transcript of Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela...
![Page 1: Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela allinterno di un unico processo In Java un thread è un metodo.](https://reader036.fdocuments.net/reader036/viewer/2022082604/5542eb67497959361e8d2fd2/html5/thumbnails/1.jpg)
Programmazione concorrente
Java
![Page 2: Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela allinterno di un unico processo In Java un thread è un metodo.](https://reader036.fdocuments.net/reader036/viewer/2022082604/5542eb67497959361e8d2fd2/html5/thumbnails/2.jpg)
MultithreadingMultithreading
flussi di esecuzione parallela all’interno di un unico processo
In Java un thread è un metodo che viene eseguito contemporaneamente ad altri
La gestione dei thread java è totalmente indipendente dal sistema operativo ospite
![Page 3: Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela allinterno di un unico processo In Java un thread è un metodo.](https://reader036.fdocuments.net/reader036/viewer/2022082604/5542eb67497959361e8d2fd2/html5/thumbnails/3.jpg)
Classe derivataIl metodo più semplice per creare un thread è quello di definire una classe derivata dalla classe java.lang.Thread
La classe deve ridefinire il metodo public void run()
La classe Thread ha un metodo start() che richiama implicitamente il metodo run
Il metodo start() non ha parametri quindi gli eventuali parametri devono essere gestiti tramite il costruttore
![Page 4: Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela allinterno di un unico processo In Java un thread è un metodo.](https://reader036.fdocuments.net/reader036/viewer/2022082604/5542eb67497959361e8d2fd2/html5/thumbnails/4.jpg)
Esempiopublic classe EsempioThread extends java.lang.Thread {
…
public void run() {
…
}
}
![Page 5: Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela allinterno di un unico processo In Java un thread è un metodo.](https://reader036.fdocuments.net/reader036/viewer/2022082604/5542eb67497959361e8d2fd2/html5/thumbnails/5.jpg)
Esempio di utilizzo
public static void main(String[] args) {
…
EsempioThread es1 = new EsempioThread(…);
es1.start();
while(es1.isAlive);
![Page 6: Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela allinterno di un unico processo In Java un thread è un metodo.](https://reader036.fdocuments.net/reader036/viewer/2022082604/5542eb67497959361e8d2fd2/html5/thumbnails/6.jpg)
isAlive()Il metodo isAlive() restituisce true se il thread è ancora in esecuzione
In alternativa al metodo isAlive si può utilizzare il metodo join che attende il completamente del thread
![Page 7: Programmazione concorrente Java. Multithreading Multithreading flussi di esecuzione parallela allinterno di un unico processo In Java un thread è un metodo.](https://reader036.fdocuments.net/reader036/viewer/2022082604/5542eb67497959361e8d2fd2/html5/thumbnails/7.jpg)
Metodi di Threadlong getid() restituisce l’identificatore del thread
void setName(String nome) setta il nome
String getName() restituisce il nome
void interrupt() interrompe il thread
void setPriority(int p) stabilisce la priorità