睡眠()和等待()之间的混淆
这个问题在这里已经有了答案:
Java中的等待和睡眠差异:
好吧,我要试着回答这个问题。
如果t1
永远不会再运行,我会说内核的线程调度程序被破坏了。 我不知道你的想法在哪里,它永远不会再次运行。
如果您有两个线程对一个对象进行更改,则需要确保它们的行为正确。 比如使用synchronized
来确保一次只有一个线程操纵对象。 你的例子很奇怪,因为你似乎暗示程序员不会决定代码发生了什么。
你不明白wait()
和notify()
。 搜索关于他们的问题,有很多。
wait()
需要在同步上下文中才能获得对象监视器。 同步上下文中的sleep()
会为其他想要输入的线程创建一个不必要的块。