zoukankan      html  css  js  c++  java
  • sleep与wait的对比

    链接:https://www.nowcoder.com/questionTerminal/eeff0fdb43034ee7b43838fb9de4519e
    来源:牛客网

    • sleep是线程类(Thread)的方法,wait是Object类的方法;
    • sleep是Thread的静态类方法, 谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉, 要让b线程睡觉要在b的代码中调用sleep。
    • sleep不释放对象锁,wait放弃对象锁,sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
    •   wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。
    • wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁,获取锁之后是就绪状态,而不是运行状态,只有获取CPU执行才能叫运行态。
    • 使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。
  • 相关阅读:
    课后作业之找水王
    SCRUM第二阶段第十天
    第九周总结
    冲刺一3
    用户项目
    预会热词统计
    冲刺一2
    冲刺一(一阶)1
    第八周总结
    小组合作
  • 原文地址:https://www.cnblogs.com/Lxiaojiang/p/6709742.html
Copyright © 2011-2022 走看看