线程调度是指系统为线程分配处理器使用权的过程,调度主要方式有两种:
- 协同式 (Cooperative Threads-Scheduling)线程调度
- 抢占式(Preemptive Threads-Scheduling)线程调度。
协同式线程(Cooperative Threads-Scheduling)调度
线程的执行时间由线程本身来控制,线程把自己的工作执行完后,要主动通知系统切换到另外一个线程上去。
好处:实现简单,没什么线程同步问题
坏处:线程执行时间不可控(一旦某个线程代码有问题,一直不告诉系统线程的切换,那么程序就会阻塞)
抢占式(Preemptive Threads-Scheduling)线程调度
每个线程将由系统来分配执行时间,线程的切换不由线程本身来决定。
在Java中,由Thread::yield()
可以主动让出执行时间,但是想主动获取执行时间,线程本身是没有办法的。
好处:线程执行时间可控,不会导致有某个线程使得整个系统阻塞
Java使用的线程调度就是抢占式调度。
网友评论