当有线程调度程序时,执行线程如何并发运行?

2024-03-06

从我读过的定义来看:

线程基本上是并发运行的代码片段(在 同一时间).

然而,它们如何在线程调度程序存在的情况下同时运行呢?

我读到线程调度程序基本上是从池中随机选择一个线程在某个时刻运行Runnable线程。由此我得知,在一个精确的时间点,只有一个可运行线程真正处于运行状态(正在运行)。 (所有这些都来自 SCJP Sun 认证程序员学习指南)任何人都可以澄清这一点吗?

这些线程真的是并发运行的吗?


然而,它们如何在线程调度程序存在的情况下同时运行呢?

它们并不总是同时运行,调度程序的工作是交换正在运行的线程,以便它们看起来是并发运行的。也就是说,速度太快,你看不到。

调度程序使用 0.1 ms 的时间片。您只能看到 10 - 25 毫秒的闪烁,所以这对您来说太快了,但它正在快速交换线程,因此看起来存在并发。

例如你不会看到电影从一帧跳到下一帧。每帧每 1/42 秒更改一次,因此您认为看到了运动,但实际上对于高速摄像机,屏幕看起来会跳动。

如果您有一个逻辑 CPU,则所有线程都将交换到一个 CPU。如果您有多个逻辑 CPU,则一小部分可以同时运行,其余的必须等待。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当有线程调度程序时,执行线程如何并发运行? 的相关文章

随机推荐