Thread support is a feature of the hosting operating system. The operating system controls running the thread just like a process. If the hardware has multiple cores, the more than one thread can run at the same time.
As there may be more threads and processes than cpu core, the operating system scheduler controls which ones runs. The scheduler use a cpu clock to know when to switch what code is actually running.
As it has been easier to add cpu cores, rather than make the cpu faster, modern operating systems and compilers stress thread support to use the extra cpu cores.
Threads are different than coroutines. Coroutines run on the same thread and are generally implemented by a library or compiler. In a coroutine, the routines yield to each other.