JVM的线程调度实现(抢占式调度)
抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某 种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长, 甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。
Java中线程会按优先级分配CPU时间片运行,且优先级越高越优先执行,但优先级高并不 代表能独自占用执行时间片,可能是优先级高得到越多的执行时间片,反之,优先级低的分到 的执行时间少但不会分配不到执行时间。
线程让出cpu的情况
1、当前运行线程主动放弃CPU, JVM暂时放弃CPU操作(基于时间片轮转调度的JVM操作 系统不会让线程永久放弃CPU,或者说放弃本次时间片的执行权),例如调用yield()方法。
2、 当前运行线程因为某些原因进入阻塞状态,例如阻塞在I/O上。
3、 当前运行线程结束,即运行完run()方法里面的任务。
Was this helpful?
0 / 0