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.