Java Future - отложить задачу - PullRequest
0 голосов
/ 06 июня 2018

У меня есть следующие 2 метода init, которые вызывают doDataInit ():

   public void sessionBegin(SessionEvent event)
         throws Exception {
      ....
      doDataInit();
   }

   public void init() {
      ...
      doDataInit();
   }

и метод:

private Future<WorkItems>
         doDataInit() {
      //do some stuff
      Callable<WorkItems> initData = getData();
      Future<WorkItems> result = EXECUTOR.submit(initData);
      return result;
   }

Теперь я хочу проверить внутриМетод doDataInit, который при значении true собирается приостановить выполнение задачи.Или иначе сказал - я хочу заблокировать выполнение задачи, пока не будет выполнено определенное условие, и периодически проверять, выполняется ли данное условие.Как только это - продолжить выполнение.

Каков наилучший (самый эффективный) способ добиться этого в этом сценарии?

В настоящее время я могу думать о том, что:

  • спать потоком - неэффективно
  • каким-то образом блокировать вызываемый
  • блокировать исполнителя
  • есть цикл for, в котором я выполняю несколько раз проверок

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...