这是因为对的调用
lock.wait()释放了锁定,从而允许第二个线程进入同步块。从javadoc中提取
该线程释放此监视器的所有权,并等待直到另一个线程通过调用notify方法或notifyAll方法通知等待在该对象监视器上等待的线程唤醒。然后,线程等待,直到它可以重新获得监视器的所有权并恢复执行。
请注意,您的代码中存在一些问题,例如:
- 你不应该在while循环之外等待
- 没有通知,所以您的等待可能会永远持续
- 与直接扩展Thread相比,让您的任务实现Runnable并将其作为参数传递给Thread的构造函数是一种更好的做法。



