线程状态WAIT和线程状态BLOCKED有什么区别?
Blocked
A thread that is blocked waiting for a monitor lock is in this state.Waiting
A thread that is waiting indefinitely for another thread to perform a particular action is in this state
没有向我解释差异。
最佳答案
线程一旦在对象上调用 wait()
就会进入等待状态。这称为 Waiting 状态。一旦一个线程达到等待状态,它就需要等到其他线程调用对象上的 notify()
或 notifyAll()
。
一旦通知此线程,它将无法运行。可能是其他线程也被通知(使用 notifyAll()
)或者第一个线程还没有完成他的工作,所以它仍然被阻塞直到它有机会。这称为阻塞状态。每当一个线程试图获取对象上的锁并且某个其他线程已经持有该锁时,就会出现阻塞状态。
一旦其他线程离开并且它的这个线程机会,它移动到 Runnable 状态之后它是合格的拾取基于 JVM 线程机制的工作并移动到运行状态。
关于java - WAIT 和 BLOCKED 线程状态的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680422/