У меня есть следующие 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, в котором я выполняю несколько раз проверок
Заранее спасибо.