Я хочу сделать что-то вроде этого:
public class MyCallable implements Callable<Boolean>, MyObserver
{
Boolean mSuccess = false;
@Override
public Boolean call() throws Exception
{
// ... Wait here until myCallback is called ...
return mSuccess;
}
@Override
public void myCallback()
{
if(something) mSuccess = true;
}
}
поэтому я могу использовать его как:
MyCallable callable = new MyCallable();
FutureTask<Boolean> futureTask = new FutureTask<Boolean>(callable);
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.execute(futureTask);
Boolean successfull = futureTask.get();
Как будет выглядеть этот код «Дождитесь вызова обратного вызова»? Я думаю, я мог бы просто создать член с именем «Boolean mCallbackCalled = false» и просто пока (! mCallbackCalled), но это кажется довольно хакерским...
CountDownLatch
, но это не похоже на подходящий дизайн. - person Sotirios Delimanolis   schedule 21.10.2013BlockingQueue
? Тоже не кажется уместным. - person Meesh   schedule 21.10.2013