Difference between 睡觉 和 等待 在java中

常见的面试问题之一是“之间有什么区别 睡觉 等待 在java中”在我们真正看到差异之前,请先简要介绍一下两者。

睡觉

  • 它使当前正在执行的线程休眠特定时间。
  • 其准确性取决于系统计时器和调度程序。
  • It keeps the monitors it has acquired, so if it is called from 已同步 context, no other thread can enter that block or method.
  • If we call interrupt() method , it will wake up the 睡觉 ing thread.

等待

  • 它导致当前线程等待,直到另一个线程为此对象调用notify()方法或notifyAll()方法
  • It must be called from 已同步 context i.e. from block or method.It means before 等待 () method is called,current thread must have lock on that object.
  • 它在调用它的对象上释放锁定,并将其添加到等待列表中,以便另一个线程可以在该对象上获取锁定。

睡眠与等待:

参数
等待
睡觉
同步化

应该从同步上下文即块或方法中调用wait,如果不使用同步上下文调用它,则会抛出IllegalMonitorStateException

不需要从同步块或方法中调用
呼吁

等待 方法在Object上操作并在Object类中定义

睡觉 method operates on current thread 和 is 在java中.lang.Thread
解除锁定
等待对其调用的对象的释放锁,以及持有该锁的其他锁
睡眠方法根本不释放锁
唤醒条件
直到从Object类调用notify()或notifyAll()
直到时间到期或调用interrupt()
静态的
等待是非静态方法
睡眠是静态方法

你可以经历 爪哇 核心面试题 对于初学者和有更多此类问题的经验丰富的人。


导入联系人

您可能还喜欢:

相关文章

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。