A thread must move out of a blocked state into the runnable state using the opposite of whatever put it into the blocked state:
-
If a thread has been put to sleep(), the specified timeout period must expire.
-
If a thread has been suspended, someone must call its resume() method.
-
If a thread called wait(), then someone else using the resource for which it is waiting must call notify() or notifyAll().
-
If a thread is waiting for the completion of an input or output operation, then the operation must finish.
|