Home - Prof-Matteo-Palitto-JCMaxwell/MultiThreading GitHub Wiki
Welcome to the MultiThreading wiki!
Thread
Letteralmente THREAD vuol dire filo, ma in particolare nell'immaginario comune e' parte di un fascio di fili intrecciati per fare un cordone unico. In informatica THREAD e' un flusso di dati parte di un fascio di flussi che lavorano insieme (contemporaneamente) e costituiscono un unico programma.
Esercizio 1
Partendo dal programma che trovate nel file Multithread.java che avvia 2 threads uno chiamato TIC e l'altro TAC:
- Aggiungere un thread chiamato TOE
- Aspettare che tutti i 3 threads terminino e quindi stampare sullo schermo il punteggio finale (suggerimento: usate tic.join(); tac.join(); toe.join())
NOTA: per il secondo punto dovete fare una ricerca su join()
Modificare la classe TicTac e chiamarla TicTacToe e inoltre
- il tempo di "sleep" sia random tra 100ms e 300ms
- nel caso in cui TOE capiti subito dopo TAC incrementi il punteggio
Esercizio 2
Dopo aver preso visione della teoria sui MONITOR esposta nella pagina Condivisione Risorse tra Threads
Modificate il vostro Esercizio 1 usando un MONITOR invece delle variabili STATIC.
NOTA: potete prendere visione del codice TicTacToe.java che ho fatto per voi.
Esercizio 3
Partendo dal programma che trovate nel file FilosofiACena.java che simula il problema dei Filosofi A Cena
Fate le modifiche opportune per aggiungere la seguente modifica al problema:
- ogni filosofo tra una portata e l'altra deve bere del vino
- sulla tavola ci sono M bottiglie di vino dove M e' un intero > 0