Esercitazione thread in Java - Dipartimento di Ingegneria Industriale
Transcript
Esercitazione thread in Java - Dipartimento di Ingegneria Industriale
Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa Esercitazione Java thread 1. Realizzare una classe thread Processo che deve effettuare un numero fissato di elaborazioni. Per ogni elaborazione il singolo thread: − chiede l’uso della risorsa di calcolo che gli è stata assegnata(classe CPU); − se la risorsa non è disponibile, riprova dopo un intervallo prefissato; − una volta ottenuta, la mantiene occupata per un numero random di millisecondi (utilizzare il metodo sleep()); − rilascia la risorsa al termine dell’elaborazione. La classe Processo ha come campi: il numero di esecuzioni che il singolo thread deve effettuare e la risorsa di calcolo (un oggetto della classe CPU) che gli viene assegnata. La risorsa di calcolo (oggetto della classe CPU) è caratterizzata da avere un numero massimo di thread che possono essere contemporaneamente in esecuzione. Scrivere, dunque, due metodi synchronized che regolano l’accesso e il rilascio della risorsa di calcolo. Infine scrivere una programma che crei un oggetto della classe CPU e avvii l’esecuzione di un certo numero di thread Processo a cui sia stata assegnata la stessa risorsa di calcolo. 2. Realizzare una variante dell’esercizio precedente in cui l’oggetto CPU può essere utilizzato da un solo thread alla volta e l’esecuzione deve rispettare un ordine prestabilito. Ad esempio se vengono attivati tre thread Processo identificati rispettivamente da id=1,2,3, l’ordine di esecuzione dovrà rispettare ciclicamente la sequenza Processo1, Processo2, Processo3; Processo1, Processo2, Processo3; etc.