Sulla maggior parte dei sistemi operativi thread e processo sono due concetti separati. Un processo può avere diversi thread. I vantaggi di questi sono molteplici, tra cui la condivisione della memoria, risorse, spazio d'indirizzamento e comunicazione e context switch più veloci e semplici.
Come ha anche detto examinedcastle vengono usati principalmente per svolgere più operazioni parallelamente (per quanto permesso dallo scheduler almeno). Sempre come ti è stato detto dipende molto dalla tua applicazione: una chat, un browser o un web server necessitano di essere multithreading per essere veramente efficaci (e funzionanti alla fine).
Ad esempio, in una chat, ci potrebbero essere 2 thread: uno in ascolto dal server per i nuovi messaggi e uno per l'invio dei tuoi. Senza questi thread, non potresti avere un'istruzione bloccante sempre in attesa del server e voler scrivere/inviare il tuo messaggio. Saresti bloccato nel precedente loop. In questo modo, invece, lo scheduler prende un thread e poi l'altro, continuamente, permettendoti di avere la sensazione di multitasking e poter quindi lavorare con la tua applicazione.