1.Java中用到的线程调度算法
在运行池中,会有多个处于就绪状态的线程在等待CPU,Java虚拟机的一项任务就是负责线程的调度,线程调度是指按照特定机制为多个线程分配CPU的使用权
有两种调度模型:分时调度模型和抢占式调度模型
分时调度模型:让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片
抢占式调度模型:Java虚拟机采用抢占式调度模型,抢占式调度模型是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的优先级相同,那么随机选择一个线程,使其占用CPU
2.线程调度策略
线程调度器选择让优先级最高的线程运行,如果发生下面几种情况,就会终止线程的运行:
- 线程体中调用yield方法让出cpu的使用权
- 线程体中调用sleep方法使线程进入睡眠
- 线程由于I/O操作受到阻塞
- 另外一个更高优先级线程出现
- 所获得的时间片用完
3. 什么是线程调度器
线程调度器是一个操作系统服务,它负责为就绪态的线程分配CPU时间,一旦我们创建一个线程并启动它,它的执行便依赖线程调度器的实现