Разница между ожиданиями () и сном () - PullRequest
1128 голосов
/ 24 июня 2009

В чем разница между wait() и sleep() в темах?

Мое понимание того, что wait() -иновый поток все еще находится в рабочем режиме и использует циклы ЦП, но sleep() -ин не использует правильные циклы ЦП?

Почему у нас есть и wait(), и sleep(): как их реализация меняется на более низком уровне?

Ответы [ 32 ]

1 голос
/ 17 мая 2013
  • Метод wait(1000) заставляет текущий поток спать до одной секунды .
    • Поток может спать менее 1 секунды, если он получает вызов метода notify() или notifyAll().
  • При вызове sleep(1000) текущий поток спит в течение ровно 1 секунду .
    • Также спящий поток не удерживает блокировку любого ресурса . Но ожидание потока делает.
0 голосов
/ 20 марта 2012

Предположим, вы слышите песни.

Пока выполняется текущая песня, следующая песня не будет воспроизводиться, т.е. Sleep () вызывается следующей песней

Если вы закончите песню, она остановится, и пока вы не нажмете кнопку воспроизведения (notify ()), она не будет воспроизводиться, т.е. вызывается wait () для текущей песни.

В обоих случаях песни идут в состояние ожидания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...