Look for some more
Waiting
A thread can be put in waiting state for various reasons e.g. calling it’s wait() method. Usually program put a thread in WAIT state because something else needs to be done prior to what current thread is doing.
Read More: Working With wait(), notify() and notifyAll() in Java?
Once the thread wait state is over or it is, it’s state is changed to RUNNABLE and it’s moved back to thread pool.
Timed Waiting
A RUNNABLE thread can transition to the TIMED WAITING state if it provides an optional wait interval when it’s waiting for another thread to perform a task. You can put a java thread in TIMED WAITING state by calling it’s sleep(long millis) method or wait(long millis) method.
Such a thread returns to the RUNNABLE state when it’s notified by another thread or when the timed interval expires—whichever comes first.
Timed waiting threads and waiting threads cannot use a processor, even if one is available.


