Потребление ЦП, когда поток спит с использованием Thread.sleep


У меня есть серверная программа, которая опрашивает базу данных на предмет новых запросов, я хочу, чтобы этот опрос выполнялся с интервалом в 1 минуту, поэтому, Я установил Thread.sleep () в цикле программы while.
Проблема в том, что всякий раз, когда эта программа должна "спать", потребление ЦП резко возрастает (а именно, примерно на 25–30%).
Как это ни парадоксально, когда программа не бездействует и занята обработкой запросов, потребление ЦП падает до 0,4%.
Я прочитал в Интернете и обнаружил, что есть проблемы с производительностью, связанные с thread.sleep, но я не смог найти какой-либо жизнеспособной альтернативы (Thread.wait требует уведомления об объекте, что, на мой взгляд, бесполезно мой сценарий)

Основной цикл (когда нет новых запросов) ничего не делает, вот скелет всего, что делается при загрузке процессора 25%

-> poll
{ {1}} -> Нет новых записей?
-> Sleep
-> repeat

8
задан angryInsomniac 14 October 2011 в 07:38
поделиться