The thread you are referring to is called software thread ; and you can create as many program threads as you need, if your operating system allows it. Each program stream or piece of code can run simultaneously from others.
There is at least one hardware thread for each core to which the operating system can assign a software thread. For example, if you have 8 cores, you have a pool of hardware threads with a throughput of 8. In this 8-slot pool, you can match tens or hundreds of software threads in which only 8 threads actually work at the hardware level, i.e. in parallel .
Software streams are similar to people who use the same computer. Everyone can use this computer for some time, it is not necessary to carry out their task, and then give it to another.
Hardware streams are similar to people who have a computer for each of them. All of them can simultaneously perform their tasks.
Note. For i7, there are two hardware threads in each core (the so-called hyperthreading). This way you can have up to 16 threads running in parallel.
source share