睡眠()和等待()之间的混淆

这个问题在这里已经有了答案:

  • wait()和sleep()之间的差异33个答案

  • Java中的等待和睡眠差异:

  • 在等待期间等待对象释放锁定,而等待期间睡眠不释放锁定。
  • 等待通常在条件下完成,线程等待,直到一个条件为真,而睡眠只是让你的线程进入睡眠状态。
  • 只有在可以在没有同步块的情况下调用睡眠时,才从同步上下文调用等待。 请参阅为什么等待和通知需要从同步方法调用以获取更多详细信息。
  • 在线程上调用睡眠时,等待被调用对象。 请参阅为什么等待和通知是在对象类而不是线程中定义的。
  • 等待线程可以通过调用notify和notifyAll来唤醒,而睡眠线程不能通过调用notify方法唤醒。

  • 好吧,我要试着回答这个问题。

  • 如果t1 永远不会再运行,我会说内核的线程调度程序被破坏了。 我不知道你的想法在哪里,它永远不会再次运行。

  • 如果您有两个线程对一个对象进行更改,则需要确保它们的行为正确。 比如使用synchronized来确保一次只有一个线程操纵对象。 你的例子很奇怪,因为你似乎暗示程序员不会决定代码发生了什么。

  • 你不明白wait()notify() 。 搜索关于他们的问题,有很多。

  • wait()需要在同步上下文中才能获得对象监视器。 同步上下文中的sleep()会为其他想要输入的线程创建一个不必要的块。

  • 链接地址: http://www.djcxy.com/p/92137.html

    上一篇: Confusion between sleep() and wait()

    下一篇: Can I use wait instead of sleep?