tl; dr: они называются потоками, потому что «поток» является подходящей метафорой.
Когда вы запускаете поток, вы полагаетесь на операционную систему для распределения времени обработки, чтобы ваш поток мог выполняться. Пока ваш поток выполняется, процессор (или ядро) уделяет все внимание вашему потоку. Когда операционная система переключает ядро на другой поток, ваш поток прекращает выполнение, пока другой поток обслуживается.
Таким образом, исполнение прыгает повсюду. Но целостность набора машинных инструкций остается неизменной, несмотря на эти скачки, потому что мы создаем механизмы защиты и параллелизма для защиты его состояния и состояния объектов, с которыми он взаимодействует.
Таким образом, поток относится не к выполнению инструкций в каком-либо конкретном потоке, а к инструкциям, которые в конечном итоге будут выполняться в созданном нами потоке. Другими словами, каждый поток можно рассматривать как отдельную машину или агент (мы называем их легкими процессами), не думая обо всех переключениях контекста, которые выполняет операционная система, чтобы создать впечатление, что они все выполняется одновременно.
Другими словами, несмотря на все прыжки вокруг, которые ОС делает за кулисами, то, что мы называем потоком (последовательность операций, которые мы выполняем в облегченном процессе), все еще может рассматриваться как та же самая последовательность операций, если бы мы не породили нить, предполагая, что мы приняли необходимые средства защиты от параллелизма.
Если это описание кажется слишком весомым и абстрактным, подумайте о ветке на форуме, например, Reddit. Вы можете отказаться от новых обсуждений; каждое обсуждение - это отдельная тема. Вы можете прыгать вперед и назад между потоками. Но каждый поток все еще сохраняет свою структурную целостность как отдельный разговор.