public ListenableFuture<?> submit(T task) { QueuedTask<T> queuedTask = new QueuedTask<>(task); queuedTasks.add(queuedTask); acquirePermit(); return queuedTask.getCompletionFuture(); }
private void runNext() { final QueuedTask<T> queuedTask = queuedTasks.poll(); ListenableFuture<?> future = submitTask(queuedTask.getTask()); FutureCallback<Object> callback = new FutureCallback<Object>() { @Override public void onSuccess(Object result) { queuedTask.markCompleted(); releasePermit(); } @Override public void onFailure(Throwable t) { queuedTask.markFailure(t); releasePermit(); } }; Futures.addCallback(future, callback, directExecutor()); }
private void runNext() { final QueuedTask<T> queuedTask = queuedTasks.poll(); ListenableFuture<?> future = submitTask(queuedTask.getTask()); FutureCallback<Object> callback = new FutureCallback<Object>() { @Override public void onSuccess(Object result) { queuedTask.markCompleted(); releasePermit(); } @Override public void onFailure(Throwable t) { queuedTask.markFailure(t); releasePermit(); } }; Futures.addCallback(future, callback, directExecutor()); }
private void runNext() { final QueuedTask<T> queuedTask = queuedTasks.poll(); ListenableFuture<?> future = submitTask(queuedTask.getTask()); Futures.addCallback(future, new FutureCallback<Object>() { @Override public void onSuccess(Object result) { queuedTask.markCompleted(); releasePermit(); } @Override public void onFailure(Throwable t) { queuedTask.markFailure(t); releasePermit(); } }); }
@Override public void onFailure(Throwable t) { queuedTask.markFailure(t); releasePermit(); } });
@Override public void onSuccess(Object result) { queuedTask.markCompleted(); releasePermit(); }
@Override public void onFailure(Throwable t) { queuedTask.markFailure(t); releasePermit(); } };
@Override public void onFailure(Throwable t) { queuedTask.markFailure(t); releasePermit(); } };
public ListenableFuture<?> submit(T task) { QueuedTask<T> queuedTask = new QueuedTask<>(task); queuedTasks.add(queuedTask); acquirePermit(); return queuedTask.getCompletionFuture(); }
@Override public void onSuccess(Object result) { queuedTask.markCompleted(); releasePermit(); }
public ListenableFuture<?> submit(T task) { QueuedTask<T> queuedTask = new QueuedTask<>(task); queuedTasks.add(queuedTask); acquirePermit(); return queuedTask.getCompletionFuture(); }
@Override public void onSuccess(Object result) { queuedTask.markCompleted(); releasePermit(); }