Работа с монитором
wait() можно вызвать только внутри synchronized-блока: метод освобождает монитор объекта и переводит поток в состояние ожидания. sleep() монитор не освобождает.
Java Example
synchronized (lock) {
lock.wait(); // монитор освобожден
}
Thread.sleep(1000); // монитор удерживаетсяПробуждение потока
Поток после sleep() продолжает работу по истечении таймаута. Поток после wait() ждет вызова notify() или notifyAll() на том же объекте либо таймаута.