zoukankan      html  css  js  c++  java
  • 多线程.Thread.Sleep方法

    多线程执行中,调用Thread.Sleep()方法

    分情况:

    1。

    单核的情况下

    是把当前正在工作的主线程停止(也就是从把线程变成非工作线程)。

    其他需要工作的线程来争夺CPU这个闲下来的核。谁争夺到了谁就开始执行。

    直到下一次Sleep的时间到了,又重新来争夺这个CPU的核。但是这里要等到这个核空闲下来才行

    (也就是调用ThreadSleep()或工作线程的任务结束。有点类似于异步的概念)

    2.

    多核的情况下

    是把当前正在工作的主线程停止(也就是从把线程变成非工作线程).

    如果其他的核的数量足以支撑其他所有线程,那么就不需要来争夺刚刚闲下来的CPU的核。

    等到前面Sleep的时间到了就继续执行刚才的任务。

    如果核的数量不够让所有线程同时执行。那么就和1一样了。

    所以有人会在代码里写TheadSleep(0).其实就是强制让CPU空闲下来,所有线程重新参与竞争。这个技巧可以防止有时候线程假死,其他线程有进不来的。

  • 相关阅读:
    【jQuery】添加删除记录练习
    git
    常用正则表达式
    【资源】前端插件
    menu 菜单显示隐藏-jquery实现
    java作业——Day006
    java作业——Day005
    java作业——Day004
    java作业——Day003
    java作业——Day001
  • 原文地址:https://www.cnblogs.com/fengxiaoling/p/9794089.html
Copyright © 2011-2022 走看看