Как периодически проверять состояние, пока оно не пройдет или не истечет срок действия - PullRequest
0 голосов
/ 09 июня 2019

Наше приложение весенней загрузки получает уведомление об обновлении ресурса и сначала должно проверить, доступен ли ресурс для обновления, т. Е. Заблокирован ли другой поток для обновления (поток блокировки разблокирует его после завершения задачи).

Проверка ресурса должна быть начата после получения события / уведомления для обновления ресурса и должна выполняться через фиксированный интервал (например, 100 мс) до времени ожидания.

  • Тема получает уведомление об обновлении ресурса.
  • Сначала проверяется, не заблокирован ли ресурс для обновления
  • Если ресурс уже заблокирован, поток должен периодически повторять проверку до установленного времени ожидания.
  • Если при повторной проверке ресурс найден разблокированным, поток помечает его как заблокированный и запускает обновление.

Мы использовали Awaitility для того же, но это утилита, ориентированная на тестирование, например. ниже

await().atMost(1, TimeUnit.SECONDS).pollInterval(10, TimeUnit.MILLISECONDS).until(future::isDone);

Является ли служба Executor или служба планировщика лучшим способом для достижения того же?

Если это так, то образец был бы очень полезен.

...