My question is related to java multithreaded programming.
I am dealing with main thread that creates many workers, every worker is a thread.
To get results/errors from workers to main thread i used with Callable and Future.
I did find in guava FutureCallback interface to get exceptions from worker.
My question is how to use it, because I didn't find any examples on the web.
Thanks !
解决方案
Here is an example with Integer results:
ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(4));
int runs = 100;
for (int k=0; k < runs; k++) {
Callable job = ...; // create the job here
ListenableFuture completion = executor.submit(job);
Futures.addCallback(completion, new FutureCallback() {
@Override
public void onFailure(Throwable t) {
// log error
}
@Override
public void onSuccess(Integer result) {
// do something with the result
}
});
}
executor.shutdown();
while (!executor.isTerminated()) {
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
}