假设我有 2 个线程 a 和 b 在同一个进程中运行。处理器从 a 运行一些指令,从 b 运行一些指令,依此类推,直到它到达这样的代码行:Thread.sleep(1000)。
问题是我真的不明白处理器接下来会做什么。我怀疑这两个场景:
1)
- 线程 a 开始休眠 1000 毫秒
- 同时 b 正在运行
- 1000 毫秒的间隔结束了,所以:
- 如果处理器仍然从线程 b 运行代码
- 然后等到它完成
- 并从 Thread a 运行更多代码
- 别的
- 从 Thread a 运行更多代码
- 如果处理器仍然从线程 b 运行代码
2)
- 线程 a 开始休眠 1000 毫秒
- 同时 b 正在运行
1000 毫秒的间隔结束了,所以:
如果处理器仍然从线程 b 运行代码
- 停止线程 B. 因为线程 a 具有更高的优先级,并且它的代码必须在 1000 毫秒间隔后立即运行它完成
- 并从 Thread a 运行更多代码
- 然后从我们离开的地方运行线程 B 的代码。
- 别的
- 从 Thread a 运行更多代码
哪一个类似于幕后实际发生的事情?如果两者都错了,请告诉我正确的答案。