Reduce number of thread start-stop operations
Currently, when a thread goes on wait, it creates another thread to utilize the CPU core which is now free and then destroys it after waking up. This is ineffective. Need to make sure the scheduler has some inactive threads in the pool which are only activated when active threads go on hold, and get inactivated afterwards, so that the number of active threads remains constant. The pool must grow if neccessary.