zoukankan      html  css  js  c++  java
  • sleep(100L)与wait(100L)的区别

    sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,
    wait是进入等待池等待,让出系统资源,其他线程可以占用cpu,一般wait不会加时间限制,
    因为如果wait的线程运行资源不够,再出来也没用,

    要等待其他线程调用notifyall方法唤醒等待池中的所有线程,才会在进入就绪序列等待os分配系统资源, sleep是静态方法,是谁调用的谁去睡觉,就算是在main线程里调用了线程b的sleep方法,实际上还是main去睡觉,
    想让线程b去睡觉要在b的代码中掉sleep sleep(100L)是占用cpu,线程休眠100毫秒,其他进程不能再占用cpu资源,wait(100L)是进入等待池中等待,
    交出cpu等系统资源供其他进程使用,

    在这100毫秒中,该线程可以被其他线程notify,但不同的是其他在等待池中的线程不被notify不会出来,
    但这个线程在等待100毫秒后会自动进入就绪队列等待系统分配资源,

    换句话说,sleep(100)在100毫秒后肯定会运行,但wait在100毫秒后还有等待os调用分配资源,
    所以wait100的停止运行时间是不确定的,但至少是100毫秒。
    另外补充以下wait()函数的知识:
    _CRTIMP void __cdecl wait(
    unsigned int _Milliseconds
    );

    _CRTIMP void __cdecl wait(
    unsigned int _Milliseconds
    );

    参数_Milliseconds
    当前上下文应该暂停的毫秒数。如果 _Milliseconds 形参设置为值 0,那么表示当前上下文应在继续之前执行其他可运行的上下文
  • 相关阅读:
    JSP第四周作业
    JSP第二次作业
    软件测试1
    2021web课程设计
    面向对象程序综合设计课程设计-大富翁(个人博客)
    对于《提问回顾与个人总结》评论的回复
    难遇伯乐,幸得钟期——提问回顾与个人总结
    黄衫女子,黄衫好.png
    当遇到点炒饭的顾客——结对项目总结
    山鸣谷应,相得益彰——杰对项目-第二阶段总结
  • 原文地址:https://www.cnblogs.com/ymy124/p/2312523.html
Copyright © 2011-2022 走看看