A thread starts when the processor executes instructions for that thread. The scheduler passes the processor to executable threads. A sleeping thread is simply an entry into the internal scheduler tables; this thread does not consume the CPU for itself, since the scheduler knows that the thread is not working, and therefore does not give it a CPU. The entry conceptually contains the time at which the flow awakens.
Hibernation may have an indirect cost during the management of the scheduler itself. It really depends on the structures and algorithms used by the scheduler; The Linux kernel scheduler is rumored to be very good at managing thousands of sleeping threads without taking too much time to decide which thread to start. Some other operating systems are also not charged, but, as a rule, this effect is negligible when the total number of threads / processes is less than a thousand.
source share