wait() method releases CPU, releases objects lock, the thread enters into pool of waiting threads.
notifyAll() method moves all waiting threads from the waiting pool to ready state.
The java.lang.Object class wait() method throws "InterruptedException".
The yield() method puts currently running thread in to ready state.
A Thread dies after completion of run() method.