一、线程调度
线程调度就是操作系统为线程分配处理器使用权的过程。
二、线程调度方式
1. 协同式(Cooperative threads-scheduling)
协同式是指线程的切换是线程自己控制,也就是说线程执行完成后主动通知切换到另一条线程执行。
协同式调度的好处:
实现简单,线程的切换是线程可知的,所以,不存在线程同步问题。
协同式调度的缺点:
线程的执行时间不可控,假设,某个线程代码编写有错,导致线程堵塞无法通知切换其他线程执行,会导致整个进程堵塞。
2. 抢占式(Preemptive threads-scheduling)
抢占式调度是指由操作系统分配线程执行时间,线程的切换是操作系统控制。
由于线程的执行时间和线程切换由操作系统控制,即使某一条线程堵塞,也不会堵塞进程继续执行。
抢占式调度是由操作系统分配和控制,线程是不能控制的。虽然线程执行时间是不能主动申请的,但是,可以建议哪些线程可以多分配一些执行时间。这一项操作是通过线程优先级完成的。
三、Java线程调度方式
Java的线程调度采用抢占式进行调度的,Java中线程的执行顺序通过线程优先级进行调整。Java中线程线程优先级分为10级。