https://blog.csdn.net/qq_41863849/article/details/106250053
Thread.sleep(0):线程休眠0秒有什么意义?既然是 Sleep 0 毫秒,那么去掉该代码前后有啥区别?
在回答上述问题之前,先来看一下操作系统CPU调度策略:
时间片:所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。
优先级:操作系统会根据进程的优先级(会根据特定的算法算出优先级)进行调度,即操作系统会把 CPU 交给优先级最高的进程。当进程执行完毕或者自己主动挂起后,操作系统就会重新计算一 次所有进程的优先级,然后再挑一个优先级最高的把 CPU 控制权交给他。
而Thread.Sleep(0)的作用,就是“触发操作系统立刻重新进行一次CPU竞争”,竞争的结果可能是当前线程仍然获得CPU控制权,也可能是别的线程获得CPU控制权。
本博客参考Thread.sleep(0)的意义& 多线程详解。
https://www.cnblogs.com/keyyang/p/4128424.html