Appunti Classe Quarta Parte Tre Versione Ridotta 4

5

Click here to load reader

Transcript of Appunti Classe Quarta Parte Tre Versione Ridotta 4

Page 1: Appunti Classe Quarta Parte Tre Versione Ridotta 4

Per creare un thread mediante l’utilizzo dell’interfaccia Runnable:• codificare il metodo run() nella classe che implementa l’interfaccia Runnable;• creare un’istanza della classe tramite new;• creare un’istanza della classe Thread con un’altra new, passando come parametro l’istanza della classe creata;• invocare il metodo start() sul thread creato, producendo una chiamata al suo metodo run()

Come creare thread con l’interfaccia Runnable

Page 2: Appunti Classe Quarta Parte Tre Versione Ridotta 4

In questo caso non si è potuto utilizzare il metodo getName() per stampare il nome del thread e usare tale nome come suono delle campane (“din”): gli oggetti della classe Campana (che è il thread) non appartengono alla classe Thread ma implementano solamente l’interfaccia Runnable. Si devono quindi creare nel main oggetti di tipo Thread passando loro come parametro del costruttore l’oggetto Runnable creato in precedenza

Oggetti di tipo Thread a cui passare come parametro del costruttore l’oggetto Runnable (creato sempre nel main)

Page 3: Appunti Classe Quarta Parte Tre Versione Ridotta 4

Per riprodurre più suoni si sfrutta un unico metodo run() nell’interfaccia Runnable

Si utilizza un’unica classe associata a differenti thread, chiamati rispettivamente: thrd1, thrd2, thrd3

Page 4: Appunti Classe Quarta Parte Tre Versione Ridotta 4

Si poteva ricorrere a diverse modalità di definizione per i thread mediante l’interfaccia Runnable

Come visto, l’output non è sempre uguale: dipende dalla schedulazione e dai processi/thread che al momento sono nella lista di quelli pronti.

Questa modalità viene detta non deterministica. Pertanto, qualora sia necessaria una specifica sequenza tra i thread è necessario implementare meccanismi di sincronizzazione

Page 5: Appunti Classe Quarta Parte Tre Versione Ridotta 4

Il thread ha principalmente due modi di lasciare il processore:• alla terminazione dell’esecuzione del codice presente nel metodo run() e in questo caso è un rilascio definitivo;• quando esso necessita di una risorsa non disponibile e viene messo nello stato di attesa

La classe Thread offre un insieme di metodi, detti di controllo, che permettono di gestire l’uso del processore liberandolo dall’utilizzo• stop(): invocato da un altro oggetto che lo termina definitivamente;• suspend(): invocato da un altro oggetto che lo sospende temporaneamente;• resume(): invocato da un altro oggetto che lo riattiva dalla sospensione;• sleep(): invocato da un oggetto che lo sospende per un int di millisecondi