Как гласит википедия «В информатике поток выполнения - это наименьшая единица обработки, которую может планировать операционная система. Реализация потоков и процессов отличается от одной операционной системы к другой, но в большинстве случаев поток содержится внутри процесса. Несколько потоков могут существовать в одном процессе и совместно использовать ресурсы, такие как память, в то время как разные процессы не разделяют эти ресурсы. В частности, потоки процесса совместно используют инструкции последнего (его код) и его контекст (значения, на которые ссылаются его переменные в любой данный момент). Чтобы провести аналогию, несколько потоков в процессе - это как несколько поваров, которые читают одну и ту же кулинарную книгу и следуют ее инструкциям, не обязательно с одной и той же страницы ».
Источник:Вики
Для многопоточности, как здесь
«Многопоточные компьютеры имеют аппаратную поддержку для эффективного выполнения нескольких потоков. Они отличаются от многопроцессорных систем (таких как многоядерные системы) тем, что потоки должны совместно использовать ресурсы одного ядра: вычислительные блоки, кэши ЦП и буфер трансляций преобразования (TLB). В тех случаях, когда многопроцессорные системы включают в себя несколько завершенных процессорных блоков, многопоточность направлена на увеличение использования одного ядра за счет использования параллелизма на уровне потоков, а также на уровне команд. Поскольку эти два метода дополняют друг друга, они иногда объединяются в системах с несколькими многопоточными процессорами и в процессорах с несколькими многопоточными ядрами ».
Источник: Википедия
Довольно простое объяснение здесь, с точки зрения компьютерной архитектуры, я могу пойти более подробно, если вы спросите!