We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent e0be84b commit 4c9cecfCopy full SHA for 4c9cecf
多线程/Java面试题之多线程(二).md
@@ -97,13 +97,17 @@ public class SemaphoreTest {
97
}
98
```
99
### 在Java中什么是线程调度?
100
-JVM调度的模式有两种:分时调度和抢占式调度。
+线程调度是指系统为线程分配处理器使用权的过程。
101
+主要调度方式有两种,分别是协同式线程调度和抢占式线程调度。
102
-分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;
103
+协同式线程调度:线程的执行时间由线程本身控制,当线程把自己的工作执行完了之后,主动通知系统切换到另一个线程上。
104
+- 好处是切换操作对于线程自己是可知的,没什么线程同步问题。
105
+- 坏处是线程执行时间不可控,可能会一直阻塞然后系统崩溃。
106
-抢占式调度是根据线程的优先级别来获取CPU的使用权。
107
+抢占式线程调度:每个线程由系统分配执行时间,不由线程本身决定。线程的执行时间是系统可控的,不会有一直阻塞的问题。
108
+
109
+**Java使用抢占式调度**
110
-JVM的线程调度模式采用了抢占式模式。既然是抢占调度,那么我们就能通过设置优先级来“有限”的控制线程的运行顺序,注意“有限”一次。
111
### Java中用到的线程调度算法是什么?
112
抢占式。一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。
113
0 commit comments