Thread.Sleep(0) 并非是真的要线程挂起0毫秒,意义在于这次调用Thread.Sleep(0)的当前线程确实的被冻结了一下,让其他线程有机会优先执行。

Thread.Sleep(0) 是你的线程暂时放弃cpu,也就是释放一些未用的时间片给其他线程或进程使用,就相当于一个让位动作。

在线程没退出之前,线程有三个状态,就绪态,运行态,等待态。sleep(n)之所以在n秒内不会参与CPU竞争,是因为,当线程调用sleep(n)的时候,线程是由运行态转入等待态,线程被放入等待队列中,等待定时器n秒后的中断事件,当到达n秒计时后,线程才重新由等待态转入就绪态,被放入就绪队列中,等待队列中的线程是不参与cpu竞争的,只有就绪队列中的线程才会参与cpu竞争,所谓的cpu调度,就是根据一定的算法(优先级,FIFO等。。。),从就绪队列中选择一个线程来分配cpu时间。

而sleep(0)之所以马上回去参与cpu竞争,是因为调用sleep(0)后,因为0的原因,线程直接回到就绪队列,而非进入等待队列,只要进入就绪队列,那么它就参与cpu竞争。

————————————————
版权声明:本文为CSDN博主「HawkJony」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qiaoquan3/article/details/56281092

最新文章

  1. 获取WIFI密码
  2. Spring对 JDBC 的支持,JdbcTemplate类的使用
  3. android studio小技巧
  4. Hadoop中常用的InputFormat、OutputFormat(转)
  5. 浅谈Oracle函数返回Table集合
  6. Xcode本地文件 提交svn 的明细
  7. 从汇编看c++对静态成员的存取
  8. Nginx配置文件nginx.conf中文详解【转】
  9. SQL强化(一)保险业务
  10. 分布式高性能消息处理中心HPMessageCenter
  11. Oracle服务启动项
  12. 阿里技术一面,Java研发岗
  13. android打包方法超过65k错误
  14. I/O输入流基础之FileInputStream
  15. MySQL建表 TIMESTAMP 类型字段问题
  16. Javascript面向对象编程(二)
  17. ASP.NET Core 2.1中基于角色的授权
  18. 【问题解决方案】之 cmd 窗口问题汇总
  19. React Native 设置RGBA背景色
  20. 深入理解Node.js基于事件驱动的回调

热门文章

  1. SQL优化的七个方面
  2. 3分钟安装fcpx10.6.5最新 小白一看就会 简体中文版 (亲测有效)
  3. eigen的简单用法汇总
  4. 学习Java Day9
  5. 郁金香 中级班 2.c++的基类和派生类
  6. [代码审计基础 15]phpmcs_v9.6 rce
  7. 找素数(java)
  8. PHP封装自定义函数function
  9. Quill编辑器实现原理初探
  10. 跳板攻击之:lcx 端口转发