sleep() 和 wait()的区别

相同点

  1. 都会将当前线程暂停,交出CPU资源让其它线程运行。
  2. 都是native方法。
  3. 在等待期间被中断,都会抛出InterruptedException。

不同点

  1. 所属类不同
    • sleep() 属于Thread类。
    • wait() 属于Object类。
  2. 对锁保持不同
    • sleep() 保持锁。
    • wait() 释放锁。
  3. 唤醒方法不同
    • sleep() 到达指定时间自动唤醒。
    • wait() 需要notify()或notifyAll()唤醒。
  4. 使用位置不同
    • sleep() 用于任何位置。
    • wait() 用于同步代码块。
  5. 调用后进入状态不同
    • sleep() 进入TIMED-WAITING
    • wait() 进入 WAITING
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在我们日常编写java代码的时候,总会遇到需要让程序暂停一段时间的需求。这个时候,我们最常使用的方法是Thread...
    华华lucky阅读 3,644评论 0 3
  • sleep(休眠)和wait(等待)是java中多线程常用的两个方法, 本篇来讲述一下二者的区别. 1 使用限制...
    马小Sure阅读 2,548评论 0 1
  • 问:简单说说 Java 中 sleep() 与 wait() 方法的区别? 答:sleep() 方法使当前线程进入...
    Little丶Jerry阅读 3,701评论 0 0
  • 1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 sleep是Thr...
    willcoder阅读 24,254评论 2 12
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,273评论 0 4