当您休眠线程时,实际上是什么情况?
我看到休眠线程“在给定的时间段内暂停了当前线程”。但是,它是如何工作的呢?
根据Thread.sleep()在内部如何工作以及Thread.sleep如何真正工作?:
- 睡眠时间将取决于某些系统特定的粒度
- 睡眠受阻
- 线程离开CPU并停止执行
- 线程在睡眠时不占用CPU时间
我只是不太了解这一切意味着什么的内部和基本机制。
我知道有一个称为调度程序的东西负责线程之间的切换。
消息来源似乎表明这随操作系统(或硬件?)而变化,并且大多数线程被赋予1ms-60ms左右的时间,以便在CPU切换到另一个线程之前执行某些操作。
但是,当线程休眠时(例如,数秒),它如何恢复?我猜想其中涉及一个计时器,它是主板的时钟吗?它与CPU时钟速率有关吗?
即使涉及计时器,CPU如何知道何时该再次关注该线程?是否不必经常检查线程以查看其是否准备就绪?这不是有效的轮询,因此会浪费CPU时间吗?
是在休眠特定于线程语言的线程,还是由操作系统负责,还是CPU特定的事物?
有人可以通过诸如调度程序之类的基本解释以及CPU在所有这些过程中的作用向我解释一下吗?