back to top

Uso dei Thread in Java

In questo articolo, esploreremo in dettaglio come utilizzare i Thread in Java, una caratteristica fondamentale per gestire esecuzioni concorrenti. Vedremo due approcci principali per creare un thread e comprenderemo le situazioni in cui ognuno di questi metodi è vantaggioso.

Creazione di un Thread come sottoclasse della classe Thread

Per creare un thread come sottoclasse della classe Thread, dobbiamo estendere la classe Thread e implementare il metodo run, dove inseriremo il codice da eseguire nel thread stesso. La classe Thread già fornisce un metodo run, ma è vuoto, quindi dovremo sovrascriverlo con il nostro comportamento. Ecco un esempio pratico:

Pubblicità
public class EsempioThread extends Thread {
  public void run() {
    int n;
    for(n = 0; n < 6; n++) {
      System.out.println("L'indice n è uguale a: " + n);
    }
  }
}

In questo esempio, abbiamo esteso la classe Thread e implementato il nostro codice all’interno del metodo run(). Ora, vediamo come eseguire effettivamente questo thread:

public class ImplementazioneThread {
  public static void main(String[] args) {
    EsempioThread nuovoThread = new EsempioThread();
    nuovoThread.start();
  }
}

Come notiamo, abbiamo creato un’istanza di EsempioThread e la abbiamo avviata con il metodo start(). È importante utilizzare start() per lanciare un thread, poiché non possiamo chiamare direttamente run(). Il metodo start() gestisce tutto il processo di avvio del thread e chiama automaticamente il metodo run().

Creazione di un Thread utilizzando l’interfaccia Runnable

Un altro metodo per creare un thread è implementando l’interfaccia Runnable. Questo approccio è spesso preferito poiché offre maggiore flessibilità e consente di estendere altre classi. Per farlo, dobbiamo seguire questi passaggi:

public class EsempioThread implements Runnable {
  public void run() {
    int n;
    for(n = 0; n < 6; n++) {
      System.out.println("L'indice n è uguale a: " + n);
    }
  }
}

Successivamente, creiamo una classe per eseguire il nostro thread:

public class ImplementazioneThread {
  
  public static void main(String[] args) {
    EsempioThread r = new EsempioThread();
    Thread nuovoThread = new Thread(r);
    nuovoThread.start();
  }
}

In questo esempio, abbiamo creato un’istanza della classe EsempioThread e l’abbiamo passata al costruttore di Thread. Anche in questo caso, il metodo start() avvia l’esecuzione. Considerando che entrambi i metodi producono lo stesso output, il secondo metodo è generalmente preferito per la sua maggiore flessibilità.

Ora avete acquisito le basi necessarie per lavorare con i thread in Java. Nella prossima lezione, approfondiremo come gestire la concorrenza fra più thread in esecuzione contemporaneamente, un argomento essenziale per programmatori Java avanzati.

Pubblicità