Когда вы спите нить, что на самом деле происходит?
Я вижу, что спящий поток «приостанавливает текущий поток на определенный период времени» . Но как это работает?
В соответствии с тем, как Thread.sleep () работает внутри и как Thread.sleep действительно работает? :
- продолжительность сна будет зависеть от системной детализации
- сон блокирует
- поток покидает процессор и останавливает его выполнение
- поток не потребляет процессорное время во время сна
Я просто не могу понять внутреннюю и фундаментальную механику того, что все это значит.
Я понимаю, что есть что-то под названием планировщик, который отвечает за переключение между потоками.
Похоже, источники указывают, что это зависит от ОС (или оборудования?), И большинству потоков отводится 1 - 60 мс или около того, чтобы выполнить некоторые действия, прежде чем ЦП переключится на другой поток.
Но когда поток спит (например, много секунд), как он возобновляется? Я предполагаю, что таймер как-то задействован, часы материнской платы? Это связано с тактовой частотой процессора?
И даже если задействован таймер, как процессор узнает, когда пришло время снова обратить внимание на поток? Не нужно ли постоянно проверять ветку, чтобы увидеть, готова ли она? Разве это не эффективно опрос и поэтому вид будет потреблять процессорное время?
Спит ли поток в зависимости от языка, или ОС отвечает за него, или это зависит от процессора?
Может, кто-нибудь объяснит мне основные объяснения таких вещей, как планировщик и то, что процессор делает во время всего этого?