Разве плохо иметь потоки, ожидающие в Java?
У меня есть тема, которая в основном содержит
while(true) {
current = BlockingQueue.take();
results = queryDatabaseWith(current);
AtomicReference.set( results );
}
Реально в очередь будут помещены только несколько вещей, но важно, чтобы когда это происходило, запросы к БД происходили в правильном порядке. Атомная ссылка в порядке, так как я забочусь только о результатах последнего запроса к БД.
Это плохая практика, чтобы иметь это в потоке, в основном ожидая весь день?
1 ответ
Нет, это не плохо иметь ожидающие потоки в целом, это обычная практика и часто самое хорошее решение.
Поскольку ответ довольно короткий, просто быстрый совет:если нет необходимости, чтобы ваш поток реагировал немедленно, вы можете рассмотреть возможность добавления Thread.yield
к вашему бесконечному циклу ожидания, в зависимости от системы, на которой он работает, это может сэкономить ненужное использование ЦП. Смотрите документацию по Oracle