private <T> ResultsFuture<T> addWork(final Callable<T> processor, int priority) { final ResultsFuture<T> result = new ResultsFuture<T>(); final ResultsReceiver<T> receiver = result.getResultsReceiver(); Runnable r = new Runnable() { @Override public void run() { try { receiver.receiveResults(processor.call()); } catch (Throwable t) { receiver.exceptionOccurred(t); } } }; FutureWork<T> work = new FutureWork<T>(r, null, priority); if (DQPWorkContext.getWorkContext().useCallingThread()) { work.run(); } else { this.addWork(work); } return result; }
private <T> ResultsFuture<T> addWork(final Callable<T> processor, int priority) { final ResultsFuture<T> result = new ResultsFuture<T>(); final ResultsReceiver<T> receiver = result.getResultsReceiver(); Runnable r = new Runnable() { @Override public void run() { try { receiver.receiveResults(processor.call()); } catch (Throwable t) { receiver.exceptionOccurred(t); } } }; FutureWork<T> work = new FutureWork<T>(r, null, priority); if (DQPWorkContext.getWorkContext().useCallingThread()) { work.run(); } else { this.addWork(work); } return result; }
private <T> ResultsFuture<T> addWork(final Callable<T> processor, int priority) { final ResultsFuture<T> result = new ResultsFuture<T>(); final ResultsReceiver<T> receiver = result.getResultsReceiver(); Runnable r = new Runnable() { @Override public void run() { try { receiver.receiveResults(processor.call()); } catch (Throwable t) { receiver.exceptionOccurred(t); } } }; FutureWork<T> work = new FutureWork<T>(r, null, priority); if (DQPWorkContext.getWorkContext().useCallingThread()) { work.run(); } else { this.addWork(work); } return result; }