@Override public void run() { if (isDone()) { return; } if (runner != null || !RUNNER.compareAndSet(this, null, Thread.currentThread())) { // prevents concurrent calls to run return; } try { Callable c = callable; if (c != null) { Object result = null; try { result = c.call(); } catch (Throwable ex) { result = new ExecutionException(ex); } finally { setResult(result); } } } finally { // runner must be non-null until state is settled in setResult() to // prevent concurrent calls to run() runner = null; } }
@Override public <T> Future<T> submit(Runnable task, T result) { final RunnableFuture<T> rf = new CompletableFutureTask<T>(task, result, getAsyncExecutor()); execute(rf); return rf; }
@SuppressWarnings("unchecked") void submitLoadAllTask(LoadAllTask loadAllTask) { ExecutionService executionService = nodeEngine.getExecutionService(); final CompletableFutureTask<Object> future = (CompletableFutureTask<Object>) executionService.submit("loadAll-" + nameWithPrefix, loadAllTask); loadAllTasks.add(future); future.andThen(new ExecutionCallback() { @Override public void onResponse(Object response) { loadAllTasks.remove(future); } @Override public void onFailure(Throwable t) { loadAllTasks.remove(future); getNodeEngine().getLogger(getClass()).warning("Problem in loadAll task", t); } }); }
@Override public <T> Future<T> submit(Runnable task, T result) { final RunnableFuture<T> rf = new CompletableFutureTask<T>(task, result, getAsyncExecutor()); execute(rf); return rf; }
@SuppressWarnings("unchecked") void submitLoadAllTask(LoadAllTask loadAllTask) { ExecutionService executionService = nodeEngine.getExecutionService(); final CompletableFutureTask<Object> future = (CompletableFutureTask<Object>) executionService.submit("loadAll-" + nameWithPrefix, loadAllTask); loadAllTasks.add(future); future.andThen(new ExecutionCallback() { @Override public void onResponse(Object response) { loadAllTasks.remove(future); } @Override public void onFailure(Throwable t) { loadAllTasks.remove(future); getNodeEngine().getLogger(getClass()).warning("Problem in loadAll task", t); } }); }
@Override public void run() { if (isDone()) { return; } if (runner != null || !RUNNER.compareAndSet(this, null, Thread.currentThread())) { // prevents concurrent calls to run return; } try { Callable c = callable; if (c != null) { Object result = null; try { result = c.call(); } catch (Throwable ex) { result = new ExecutionException(ex); } finally { setResult(result); } } } finally { // runner must be non-null until state is settled in setResult() to // prevent concurrent calls to run() runner = null; } }
@Override public <T> Future<T> submit(Callable<T> task) { final RunnableFuture<T> rf = new CompletableFutureTask<T>(task, getAsyncExecutor()); execute(rf); return rf; }
@Override public <T> Future<T> submit(Callable<T> task) { final RunnableFuture<T> rf = new CompletableFutureTask<T>(task, getAsyncExecutor()); execute(rf); return rf; }