tl; dr: Sono chiamati thread perché "thread" è una metafora appropriata.
Quando si avvia un thread, si fa affidamento sul sistema operativo per allocare il tempo di elaborazione in modo che il thread possa essere eseguito. Mentre il thread è in esecuzione, il processore (o core) sta ponendo tutta la sua attenzione sul thread. Quando il sistema operativo cambia il core in un thread diverso, il thread interrompe l'esecuzione mentre l'altro thread viene sottoposto a manutenzione.
Quindi l'esecuzione salta dappertutto. Ma l'integrità dell'insieme delle istruzioni della macchina rimane intatta, nonostante questi salti, perché costruiamo recinzioni e meccanismi di concorrenza per proteggere il suo stato e lo stato degli oggetti con cui interagisce.
Quindi il thread si riferisce, non all'esecuzione di istruzioni in un particolare thread, ma alle istruzioni che verranno eventualmente eseguite all'interno del thread che abbiamo creato. Ogni thread, in altre parole, può essere pensato come una singola macchina o agente (li chiamiamo processi leggeri), senza dover pensare a tutte le opzioni di contesto che il sistema operativo sta eseguendo per dare l'impressione che siano tutte eseguendo contemporaneamente.
In altre parole, nonostante tutto il saltare che il sistema operativo fa dietro le quinte, quello che chiamiamo thread (la sequenza di operazioni che stiamo eseguendo in un processo leggero) può ancora essere pensato come la stessa sequenza di operazioni, se non avessimo generato il thread, supponendo di aver preso le necessarie protezioni di concorrenza.
Se questa descrizione sembra troppo pesante e astratta, pensa a una discussione in un forum, come Reddit. Puoi ramificarti nuove discussioni; ogni discussione è una sua discussione. Puoi saltare avanti e indietro tra i fili. Ma ogni thread mantiene la sua integrità strutturale come una conversazione individuale.