Thread in Java

21 aprile 2006

Fino a qualche tempo fa, prima dell’avvento dei moderni sistemi operativi, era ragionevole descrivere un computer come una macchina in grado di eseguire un programma per volta utilizzando, a tale scopo, una CPU dedicata allo svolgimento delle necessarie computazioni e una memoria che si occupasse di conservare le informazioni relative al programma in esecuzione in un determinato istante.

Oggi, come sappiamo, sui nostri sistemi è possibile eseguire svariate operazioni contemporaneamente (o, per lo meno, questa è la sensazione che si ha!). Ad esempio, potremmo ascoltare musica, scrivere una e-mail ed eseguire una scansione con l’antivirus senza preoccuparci di dover completare un’operazione prima di eseguirne una successiva.

Ma, se si escludono i sistemi che lavorano con più processori in parallelo, in fondo la struttura di un computer è rimasta basata su un singolo microprocessore e una memoria. Come si spiega, dunque, un simile comportamento?

Mettiamo da parte l’hardware e ragioniamo da un punto di vista legato alla programmazione. In base a quanto detto precedentemente, eseguire più di un programma contemporaneamente è, in fondo, la stessa cosa di ad avere un computer (e, quindi, una CPU) adibito per ogni singolo programma.

Un Thread, può essere considerato, allora come una CPU virtuale che incapsuli al suo interno i dati e il codice di un particolare programma, come rappresentato in figura:

Figura 1. La rappresentazione di un thread

La rappresentazione di un thread

In termini più generici, avvalendoci delle definizioni più classiche possiamo dire che:

  1. Un Processo è un programma in esecuzione
  2. Un Thread è un processo che appartiene ad un programma o ad un altro processo.

In Java, la classe ad hoc che implementa una CPU virtuale è la java.lang.Thread. E’ importante però, prima di vedere il codice java all’opera, fissare bene i seguenti due punti:

  1. Due o più thread possono condividere, indipendentemente dai dati, il codice che essi eseguono. Questo avviene quando tali thread eseguono il loro codice da istanze della stessa classe.
  2. Due o più thread possono condividere, indipendentemente dal codice, i dati su cui eseguono delle operazioni. Questo avviene quando tali thread condividono l’accesso ad un oggetto comune.

Se vuoi aggiornamenti su Thread in Java inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Thread in Java

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy