Я пытаюсь реализовать механизм, который позволит мне ждать с завершением функции (в частности, с обратным вызовом), пока я не получу некоторый ответ внутри получателя.Получатель ожидает ответа от какого-либо вызова API или другой длительной операции.
Я пытался выполнить цикл while, который работает на логическом флаге (volatile), который должен был быть изменен в приемнике, но в результате цикл работал вечно, а флаг никогда не меняется.
Также я попытался реализовать механизм уведомления об ожидании, но также функция ожидания «блокирует» приемник для уведомления о вызове.
РЕДАКТИРОВАТЬ: также я пытался использовать BlockingQueue, но здесь тоже не повезло.
Я прилагаю пример кода с моей реализацией.
public String getRemoteInfo() {
getInfo();
while (!finished){
Uninterruptibles.sleepUninterruptibly(200, TimeUnit.MILLISECONDS);
}
return globalResult;
}
private void getInfo(){
service.getInfo(this); //"this" is an implementation of receiver
}
@Override
public void infoReceived(String result) {
globalResult = result;
finished = true;
}