0
future.isDone() == true를 호출하는 스레드 (main)에서 다시 참을 때까지 기다리는 표준 방법은 무엇입니까?호출 가능한 결과를 반환하는 비 차단 방법
asyncMethod()를 통해 호출 스레드 (주 스레드)에서 결과를 반환하려고했습니다. asyncMethod()는 즉시 반환하지만 반환하기 전에 먼저 주 스레드로 브로드 캐스트 인 텐트를 반환하는 프로세스를 트리거합니다. 주 스레드에서 future.isDone()을 확인하지만 불행히도 future.isDone()은 반의 시간 만 반환합니다.
ExecutorService pool = Executors.newSingleThreadExecutor();
Callable<Boolean> callable = new Callable<Boolean>(){
public Boolean call() {
Boolean result = doSomething();
callbackAsync(); //calls an async method that returns immediately, but will trigger a broadcast intent back to main thread
return result;
}
};
new broadCastReceiver() { ///back on main thread
...
case ACTION_CALLABLE_COMPLETE:
if (future.isDone()) // not always true...
future.get();
}