per far fare ad un programma più cose contemporaneamente.
Ad esempio, un clientmail è un processo che è indipendente con emule che scarica e l'antivirus che controlla, i processi sono residenti in percorsi di memoria totalmente diversi, quindi un processo(sarebbe un programma) è l'unità fondamentale del sistema operativo, un thread invece è l'unità fondamentale del programma stesso, più thread stanno nello stesso spazio di memoria, è più semplice comunicare fra thread che fra processi(dove bisogna utilizzare pipe o socket), solo che ci sono problemi di sincronizzazione con i thread.
Ritornando al cliuentmail, un thread è ad esempio quello che ti permette di spedire la posta mentre tu scrivi un mail e mentre il client ne sta ricevendo un'altra.
Se tutto fosse in un unico thread il programma si bloccherebbe:
col thread l'azione di manadre una mail si stacca e continua cmq l'esecuzione.codice:| | | Manda mail | |(solo quando le mail saranno mandate) Ricevi mail ecc...
In un pezzo di codice java ad esempio se scrivi
metodo1()
metodo2()
metodo 2 verrò chiamato solo quando metodo1 avrà completamente finoto di fare quello che doveva, se metodo1 fosse un metodo start(che fa partire un thread), appena il thread parte metodo2 e tutto il codice successivo verrà eseguito in contemporanea.
Un altro esempio è la chat, per ogni utente connesso il server crea un thread che gestirà l'utente connesso in contemporanea con gli altri.
![]()