@Override public T get() throws InterruptedException, ExecutionException { synchronized (resultLock) { while (! done) { resultLock.wait(); } if (failure != null) { throw new ExecutionException(failure); } else if (cancelStateMessage != null) { throw new CancellationException(getCancellationExceptionMessage()); } else if (resultCleared) { throw new IllegalStateException("Result cleared, future get's not possible"); } else { return result; } } }
@Override public T get() throws InterruptedException, ExecutionException { synchronized (resultLock) { while (! done) { resultLock.wait(); } if (failure != null) { throw new ExecutionException(failure); } else if (cancelStateMessage != null) { throw new CancellationException(getCancellationExceptionMessage()); } else if (resultCleared) { throw new IllegalStateException("Result cleared, future get's not possible"); } else { return result; } } }
@Override public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { long startTime = Clock.accurateForwardProgressingMillis(); long timeoutInMs = unit.toMillis(timeout); synchronized (resultLock) { long remainingInMs; while (! done && (remainingInMs = timeoutInMs - (Clock.accurateForwardProgressingMillis() - startTime)) > 0) { resultLock.wait(remainingInMs); } if (failure != null) { throw new ExecutionException(failure); } else if (cancelStateMessage != null) { throw new CancellationException(getCancellationExceptionMessage()); } else if (done) { if (resultCleared) { throw new IllegalStateException("Result cleared, future get's not possible"); } return result; } else { throw new TimeoutException(); } } }
@Override public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { long startTime = Clock.accurateForwardProgressingMillis(); long timeoutInMs = unit.toMillis(timeout); synchronized (resultLock) { long remainingInMs; while (! done && (remainingInMs = timeoutInMs - (Clock.accurateForwardProgressingMillis() - startTime)) > 0) { resultLock.wait(remainingInMs); } if (failure != null) { throw new ExecutionException(failure); } else if (cancelStateMessage != null) { throw new CancellationException(getCancellationExceptionMessage()); } else if (done) { if (resultCleared) { throw new IllegalStateException("Result cleared, future get's not possible"); } return result; } else { throw new TimeoutException(); } } }
return; } else if (cancelStateMessage != null) { callback.handleFailure(new CancellationException(getCancellationExceptionMessage())); return; callback.handleFailure(failure); } else if (cancelStateMessage != null) { callback.handleFailure(new CancellationException(getCancellationExceptionMessage())); } else { callback.handleResult(result);
return; } else if (cancelStateMessage != null) { callback.handleFailure(new CancellationException(getCancellationExceptionMessage())); return; callback.handleFailure(failure); } else if (cancelStateMessage != null) { callback.handleFailure(new CancellationException(getCancellationExceptionMessage())); } else { callback.handleResult(result);