Имя шаблона для задачи обновления - PullRequest
0 голосов
/ 16 мая 2019

Мне часто приходится решать следующую проблему: длительная задача зависит от набора данных. Данные периодически обновляются, и задача должна быть запущена, в то же время данные могут быть обновлены. Затем задача должна начаться заново, чтобы обновить себя. Как этот шаблон называется в программировании и есть ли структурированный помощник для этого, может быть, в Гуаве?

Программно я бы сделал это так (пропущены детали фонового бега):

   AtomicBoolean iAmWorking = new AtomicBoolean(false);
   AtomicBoolean dataIsDirty = new AtomicBoolean(false);
   public void update() {
       dataIsDirty.set(true);
       if(!iAmWorking.compareAndSet(false, true)) {
           return;
       }
       while(dataIsDirty.compareAndSet(true, false)) {
           doSomethingLong();
       }
       iAmWorking.set(false);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...