Разве плохо иметь потоки, ожидающие в Java?

У меня есть тема, которая в основном содержит

while(true) {
  current = BlockingQueue.take();
  results = queryDatabaseWith(current);
  AtomicReference.set( results );
}

Реально в очередь будут помещены только несколько вещей, но важно, чтобы когда это происходило, запросы к БД происходили в правильном порядке. Атомная ссылка в порядке, так как я забочусь только о результатах последнего запроса к БД.

Это плохая практика, чтобы иметь это в потоке, в основном ожидая весь день?

1 ответ

Решение

Нет, это не плохо иметь ожидающие потоки в целом, это обычная практика и часто самое хорошее решение.

Поскольку ответ довольно короткий, просто быстрый совет:если нет необходимости, чтобы ваш поток реагировал немедленно, вы можете рассмотреть возможность добавления Thread.yield к вашему бесконечному циклу ожидания, в зависимости от системы, на которой он работает, это может сэкономить ненужное использование ЦП. Смотрите документацию по Oracle

Другие вопросы по тегам