自从我阅读有关Thread.State的官方解释以来,这个问题让我很困惑。
阻止
处于阻塞状态的线程正在等待监视器锁定以进入同步块/方法或在调用Object.wait后重新输入同步块/方法。
等待
处于等待状态的线程正在等待另一个线程执行特定操作。例如,在对象上调用Object.wait()的线程正在等待另一个线程在该对象上调用Object.notify()或Object.notifyAll()。调用Thread.join()的线程正在等待指定的线程终止。
另外,我在StackOverflow中阅读了一些很好的答案,例如Difference between WAIT and BLOCKED thread states,但我仍然不太确定等待和阻止。
考虑以下两种状态是否正确?
wait()
或sleep()
以放弃CPU周期; synchronized block
等基本资源被其他人占用,因此他们必须否定 等待; 答案 0 :(得分:-1)
当线程处于等待状态时,它会释放它所持有的对象的锁定,并将保持WAITING状态,直到任何其他线程在同一对象上调用notify()或notifyAll()。 BLOCKED线程正在等待其他线程释放它想要的锁。