tl; dr: Ils sont appelés threads parce que "thread" est une métaphore appropriée.
Lorsque vous démarrez un thread, vous comptez sur le système d'exploitation pour allouer du temps de traitement afin que votre thread puisse s'exécuter. Pendant que votre thread s'exécute, le processeur (ou core) place toute son attention sur votre thread. Lorsque le système d'exploitation bascule le noyau vers un autre thread, votre thread cesse de s'exécuter pendant que l'autre thread est en cours de maintenance.
L'exécution saute donc partout. Mais l'intégrité de l'ensemble des instructions machine reste intacte, malgré ces sauts, car nous construisons des clôtures et des mécanismes de concurrence pour protéger son état et l'état des objets avec lesquels il interagit.
Ainsi, le thread se réfère, non à l'exécution d'instructions dans un thread particulier, mais aux instructions qui seront éventuellement exécutées dans le thread que nous avons créé. Chaque thread, en d'autres termes, peut être considéré comme une machine ou un agent individuel (nous les appelons des processus légers), sans avoir à penser à tous les changements de contexte que le système d'exploitation effectue pour donner l'impression qu'ils sont tous s'exécutant simultanément.
En d'autres termes, malgré tous les sauts que fait le système d'exploitation dans les coulisses, ce que nous appelons un thread (la séquence d'opérations que nous exécutons dans un processus léger) peut toujours être considéré comme la même séquence d'opérations, si nous n'avions pas engendré le fil, en supposant que nous avons pris les protections de concurrence nécessaires.
Si cette description vous semble trop lourde et abstraite, pensez à un fil dans un forum, comme Reddit. Vous pouvez dériver de nouvelles discussions; chaque discussion est son propre fil conducteur. Vous pouvez sauter d'avant en arrière entre les threads. Mais chaque thread conserve son intégrité structurelle en tant que conversation individuelle.