What is the difference between thread state WAIT and thread state BLOCKED?
The Thread.State documentation:
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
does not explain the difference to me.
The difference is relatively simple.
In the BLOCKED
state, a thread is about to enter a synchronized
block, but there is another thread currently running inside a synchronized
block on the same object. The first thread must then wait for the second thread to exit its block.
In the WAITING
state, a thread is waiting for a signal from another thread. This happens typically by calling Object.wait()
, or Thread.join()
. The thread will then remain in this state until another thread calls Object.notify()
, or dies.