Fermare i thread

Far partire un thread è molto semplice in java, dopo averlo creato è sufficiente usare il metodo start(), ad esempio:

dove MyRunnable è una classe che implementa l’interfaccia Runnable sovrascrivendo il metodo run().

La creazione di un thread usando il costruttore con argomento una classe che implementa Runnable è uno dei due modi per creare un thread, l’altro è estendere la classe Thread, e in entrambi i casi poi si usa il metodo start() per avviare il thread.

Invece fermare il thread è molto più complesso, esiste un metodo stop() ma è deprecato.

Ci sono due modalità per fermare un thread:

  1. impostare un flag
    considera un thread creato con questo Runnable:

    la variabile “running” è usata nel metodo run() come condizione per eseguire il ciclo, impostandola a false il metodo run() esce e il thread si ferma.
    Per fermare un thread creato con questo Runnable è sufficiente l’istruzione:

    Osserva che la variabile “running” è volatile per cui ogni thread che accede al suo valore ottiene il valore più aggiornato.
  2. richiamare il metodo interrupt()
    con l’istruzione:

    il thread è fermato alla prima invocazione di un metodo che lancia l’eccezione InterruptedException, ad esempio wait(), join() e sleep(), come nel seguente codice:

    Se nessun metodo che lancia una InterruptedException è presente allora il controllo che è stato chiamato il metodo interrupt() deve essere fatto esplicitamente:

Una risposta a “Fermare i thread”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.