В языках многопоточность, объекты синхронизации, используются либо типовой библиотеки либо возможности самого языка. Многое из этого опосредовано транслируется в API ОС, но напрямую мы API не используем. Потому что это очень важный момент и для надежности и для производительности и прорабатывается еще на этапе создания самого языка. И потому что это синтаксически проще.
JavaScript изначально однопоточен. Но сейчас браузеры позволяют запускать фоновые потоки, фактически это отдельный процесс со своим объектом окна. И взаимодействовать между основным и фоновыми процессами с помощью сообщений. Таким образом можно запускать тяжелые алгоритмы в фоне. Но для целей скриптования странички это конечно же нельзя использовать.