• java中sleep()和wait()区别


    1,sleep方法是Thread类的静态方法,wait()是Object超类的成员方法

     

    2,sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。

    而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备

     

    3,sleep方法需要抛异常,wait方法不需要

    为什么sleep方法需要抛异常,别问我为什么,因为:

      Thread类中sleep方法就已经进行了抛异常处理
      public static native void sleep(long millis) throws InterruptedException;


    4,sleep方法可以在任何地方使用,

    wait方法只能在同步方法和同步代码块中使用

     

    java生命周期图谱如下所示:

    注意sleep方法是单线程的,没有释放锁,这个锁指的是线程锁,不是对象锁,而wait方法释放锁,这个锁是对象锁,所以sleep时间到和wait等到notify之后享受的待遇一样,都是回到就绪状态,等待系统分配cpu


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

  • 相关阅读:
    Maven打jar包(有依赖)
    java使用ffmpeg进行多个视频合并
    ffmpeg视频精准剪切
    windows下java调用海康sdk,Unable to load library 'HCNetSDK'
    java使用JNA框架调用dll动态库
    排序和反转
    118. 杨辉三角
    1394. 找出数组中的幸运数
    1491. 去掉最低工资和最高工资后的工资平均值
    1332. 删除回文子序列
  • 原文地址:https://www.cnblogs.com/sx66/p/11844695.html
Copyright © 2020-2023  润新知