Потоки и разветвления - это на самом деле две разные концепции, обе из которых существуют в системах Unix / Linux (и обе могут использоваться в C / C ++).
Идея fork () - это (очень по сути) создание отдельного процесса, который имеет тот же код выполнения, что и родительский процесс, и который начинает выполнение на линии ветвления. Цель использования вилок с функциями exec состоит в том, что функции exec закрывают процесс, который вызвал их, когда они заканчиваются. Таким образом, вы обычно выполняете форк, получая PID каждого процесса (child всегда равен 0), и заставляете родителя ждать, пока дочерний процесс завершит выполнение функции exec.
Потоки используются для параллелизма (напомним, что родитель ожидает ребенка, как правило, в разветвленной программе). Поток, такой как pthread в C / C ++ (поиск Google), будет работать параллельно основному процессу и может совместно использовать глобальные переменные и глобальные функции с исходной программой. Поскольку потоки Java ведут себя одинаково, я бы предположил, что они действуют больше как эти потоки, а не как процесс разветвления.
По сути, есть различие между разветвлением и нарезкой. Они делают совершенно разные вещи (хотя кажутся похожими). Эти понятия могут быть трудны для понимания, но вы можете изучить их с помощью (обширных) исследований, если у вас есть искреннее желание понять их.
РЕДАКТИРОВАТЬ # 1
Пожалуйста, посмотрите эти примеры того, как вилки и нити могут быть вызваны и использованы. Обратите внимание на поведение функций exec и их влияние на основную программу.
http://www.jdembrun.com:4352/computerScience/forkVSthread.zip