Thread.sleep(0)有什么作用?

Thread.sleep(0):线程休眠0秒有什么意义?既然是 Sleep 0 毫秒,那么去掉该代码前后有啥区别?

在回答上述问题之前,先来看一下操作系统CPU调度策略:

  • 时间片:所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
  • 优先级:操作系统会根据进程的优先级(会根据特定的算法算出优先级)进行调度,即操作系统会把 CPU 交给优先级最高的进程。当进程执行完毕或者自己主动挂起后,操作系统就会重新计算一 次所有进程的优先级,然后再挑一个优先级最高的把 CPU 控制权交给他。

Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”,竞争的结果可能是当前线程仍然获得CPU控制权,也可能是别的线程获得CPU控制权。

本博客参考Thread.sleep(0)的意义& 多线程详解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章