Java 类java.util.concurrent.CancellationException 实例源码
项目:pdfjumbler
文件:ProgressDialog.java
public static boolean run(SwingWorker<?,?> worker, Frame parent) throws Exception {
ProgressDialog dialog = new ProgressDialog(parent, worker);
worker.execute();
dialog.setVisible(true);
try {
worker.get();
}
catch (ExecutionException e) {
if (e.getCause() instanceof CancellationException) {
return false;
} else if (e.getCause() instanceof Exception) {
throw (Exception)e.getCause();
} else {
// ?!?
throw new AssertionError(e);
}
}
return !worker.isCancelled();
}
项目:guava-mock
文件:FutureCallbackTest.java
public void testCancel() {
SettableFuture<String> f = SettableFuture.create();
FutureCallback<String> callback =
new FutureCallback<String>() {
private boolean called = false;
@Override
public void onSuccess(String result) {
fail("Was not expecting onSuccess() to be called.");
}
@Override
public synchronized void onFailure(Throwable t) {
assertFalse(called);
assertThat(t).isInstanceOf(CancellationException.class);
called = true;
}
};
addCallback(f, callback, directExecutor());
f.cancel(true);
}
项目:openjdk-jdk10
文件:RecursiveActionTest.java
/**
* timed get of a forked task throws exception when task cancelled
*/
public void testCancelledForkTimedGet() {
RecursiveAction a = new CheckedRecursiveAction() {
protected void realCompute() throws Exception {
FibAction f = new FibAction(8);
assertTrue(f.cancel(true));
assertSame(f, f.fork());
try {
f.get(LONG_DELAY_MS, MILLISECONDS);
shouldThrow();
} catch (CancellationException success) {
checkCancelled(f);
}
}};
testInvokeOnPool(mainPool(), a);
}
项目:ibm-cos-sdk-java
文件:UploadCallable.java
/**
* Submits a callable for each part to upload to our thread pool and records its corresponding Future.
*/
private void uploadPartsInParallel(UploadPartRequestFactory requestFactory,
String uploadId) {
Map<Integer,PartSummary> partNumbers = identifyExistingPartsForResume(uploadId);
while (requestFactory.hasMoreRequests()) {
if (threadPool.isShutdown()) throw new CancellationException("TransferManager has been shutdown");
UploadPartRequest request = requestFactory.getNextUploadPartRequest();
if (partNumbers.containsKey(request.getPartNumber())) {
PartSummary summary = partNumbers.get(request.getPartNumber());
eTagsToSkip.add(new PartETag(request.getPartNumber(), summary
.getETag()));
transferProgress.updateProgress(summary.getSize());
continue;
}
futures.add(threadPool.submit(new UploadPartCallable(s3, request)));
}
}
项目:LivroJavaComoProgramar10Edicao
文件:PrimeCalculator.java
protected void done()
{
getPrimesJButton.setEnabled(true); // enable Get Primes button
cancelJButton.setEnabled(false); // disable Cancel button
try
{
// retrieve and display doInBackground return value
statusJLabel.setText("Found " + get() + " primes.");
}
catch (InterruptedException | ExecutionException |
CancellationException ex)
{
statusJLabel.setText(ex.getMessage());
}
}
项目:incubator-netbeans
文件:ShellSession.java
public static ExitStatus execute(final ExecutionEnvironment env, final String command) throws IOException, CancellationException {
while (true) {
final ShellProcess process = startProcessIfNeeded(env);
if (process == null) {
continue;
}
synchronized (process) {
if (ProcessUtils.isAlive(process.process)) {
try {
ExitStatus result = executeSync(process, env, command);
if (result != null) {
return result;
}
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
return new ExitStatus(-1, null, MiscUtils.getMessageAsList(ex));
}
}
}
}
}
项目:openjdk-jdk10
文件:CountedCompleterTest.java
/**
* get of a forked task throws exception when task cancelled
*/
public void testCancelledForkGetSingleton() {
ForkJoinTask a = new CheckedRecursiveAction() {
protected void realCompute() throws Exception {
CCF f = new LCCF(8);
assertTrue(f.cancel(true));
assertSame(f, f.fork());
try {
f.get();
shouldThrow();
} catch (CancellationException success) {
checkCancelled(f);
}
}};
testInvokeOnPool(singletonPool(), a);
}
项目:googles-monorepo-demo
文件:AbstractScheduledServiceTest.java
public void testFailOnExceptionFromRun() throws Exception {
TestService service = new TestService();
service.runException = new Exception();
service.startAsync().awaitRunning();
service.runFirstBarrier.await();
service.runSecondBarrier.await();
try {
future.get();
fail();
} catch (CancellationException expected) {
}
// An execution exception holds a runtime exception (from throwables.propogate) that holds our
// original exception.
assertEquals(service.runException, service.failureCause());
assertEquals(service.state(), Service.State.FAILED);
}
项目:mug
文件:RetryerFunctionalTest.java
@Test public void interruptedDuringReturnValueRetryRetry()
throws InterruptedException, IOException {
Retryer.ForReturnValue<String> forReturnValue =
retryer.uponReturn("bad", asList(Delay.ofMillis(0), Delay.ofMillis(0)));
when(blockedAction.result()).thenReturn("bad").thenReturn("fixed");
CompletionStage<String> stage =
forReturnValue.retry(blockedAction::blockOnSecondTime, executor);
blockedAction.retryStarted.await();
blockedAction.interrupt();
// Sadly cancellation from inner future doesn't propagate to outer.
ExecutionException exception =
assertThrows(ExecutionException.class, () -> stage.toCompletableFuture().get());
assertThat(exception.getCause()).isInstanceOf(CancellationException.class);
assertThat(exception.getCause().getCause()).isInstanceOf(InterruptedException.class);
assertThat(exception.getCause().getSuppressed()).isEmpty();
}
项目:guava-mock
文件:AbstractFutureBenchmarks.java
/**
* Implementation of completing a task. Either {@code v} or {@code t} will
* be set but not both. The {@code finalState} is the state to change to
* from {@link #RUNNING}. If the state is not in the RUNNING state we
* return {@code false} after waiting for the state to be set to a valid
* final state ({@link #COMPLETED}, {@link #CANCELLED}, or {@link
* #INTERRUPTED}).
*
* @param v the value to set as the result of the computation.
* @param t the exception to set as the result of the computation.
* @param finalState the state to transition to.
*/
private boolean complete(@Nullable V v, @Nullable Throwable t,
int finalState) {
boolean doCompletion = compareAndSetState(RUNNING, COMPLETING);
if (doCompletion) {
// If this thread successfully transitioned to COMPLETING, set the value
// and exception and then release to the final state.
this.value = v;
// Don't actually construct a CancellationException until necessary.
this.exception = ((finalState & (CANCELLED | INTERRUPTED)) != 0)
? new CancellationException("Future.cancel() was called.") : t;
releaseShared(finalState);
} else if (getState() == COMPLETING) {
// If some other thread is currently completing the future, block until
// they are done so we can guarantee completion.
acquireShared(-1);
}
return doCompletion;
}
项目:openjdk-jdk10
文件:ForkJoinPool8Test.java
/**
* timed get of a forked task throws exception when task cancelled
*/
public void testCancelledForkTimedGetCC() throws Exception {
ForkJoinTask a = new CheckedRecursiveAction() {
protected void realCompute() throws Exception {
CCF f = new LCCF(null, 8);
assertTrue(f.cancel(true));
assertSame(f, f.fork());
try {
f.get(LONG_DELAY_MS, MILLISECONDS);
shouldThrow();
} catch (CancellationException success) {
checkCancelled(f);
}
}};
checkInvoke(a);
}
项目:guava-mock
文件:FuturesTest.java
/**
* Very rough equivalent of a timed get, produced by calling the no-arg get method in another
* thread and waiting a short time for it.
*
* <p>We need this to test the behavior of no-arg get methods without hanging the main test thread
* forever in the case of failure.
*/
@CanIgnoreReturnValue
@GwtIncompatible // threads
static <V> V pseudoTimedGetUninterruptibly(final Future<V> input, long timeout, TimeUnit unit)
throws ExecutionException, TimeoutException {
ExecutorService executor = newSingleThreadExecutor();
Future<V> waiter = executor.submit(new Callable<V>() {
@Override
public V call() throws Exception {
return input.get();
}
});
try {
return getUninterruptibly(waiter, timeout, unit);
} catch (ExecutionException e) {
propagateIfInstanceOf(e.getCause(), ExecutionException.class);
propagateIfInstanceOf(e.getCause(), CancellationException.class);
throw failureWithCause(e, "Unexpected exception");
} finally {
executor.shutdownNow();
// TODO(cpovirk: assertTrue(awaitTerminationUninterruptibly(executor, 10, SECONDS));
}
}
项目:openjdk-jdk10
文件:CountedCompleterTest.java
/**
* get of a forked task throws exception when task cancelled
*/
public void testCancelledForkGet() {
ForkJoinTask a = new CheckedRecursiveAction() {
protected void realCompute() throws Exception {
CCF f = new LCCF(8);
assertTrue(f.cancel(true));
assertSame(f, f.fork());
try {
f.get();
shouldThrow();
} catch (CancellationException success) {
checkCancelled(f);
}
}};
testInvokeOnPool(mainPool(), a);
}
项目:googles-monorepo-demo
文件:TestingExecutorsTest.java
public void testNoOpScheduledExecutorInvokeAll() throws ExecutionException, InterruptedException {
ListeningScheduledExecutorService executor = TestingExecutors.noOpScheduledExecutor();
taskDone = false;
Callable<Boolean> task = new Callable<Boolean>() {
@Override public Boolean call() {
taskDone = true;
return taskDone;
}
};
List<Future<Boolean>> futureList = executor.invokeAll(
ImmutableList.of(task), 10, TimeUnit.MILLISECONDS);
Future<Boolean> future = futureList.get(0);
assertFalse(taskDone);
assertTrue(future.isDone());
try {
future.get();
fail();
} catch (CancellationException e) {
// pass
}
}
项目:openjdk-jdk10
文件:ForkJoinTaskTest.java
/**
* timed get of a forked task throws exception when task cancelled
*/
public void testCancelledForkTimedGetSingleton() throws Exception {
RecursiveAction a = new CheckedRecursiveAction() {
protected void realCompute() throws Exception {
AsyncFib f = new AsyncFib(8);
assertTrue(f.cancel(true));
assertSame(f, f.fork());
try {
f.get(LONG_DELAY_MS, MILLISECONDS);
shouldThrow();
} catch (CancellationException success) {
checkCancelled(f);
}
}};
testInvokeOnPool(singletonPool(), a);
}
项目:azeroth
文件:StandardThreadExecutor.java
/**
* 线程池内异常处理
* @param r
* @param t
*/
private void printException(Runnable r, Throwable t) {
if (t == null && r instanceof Future<?>) {
try {
Future<?> future = (Future<?>) r;
if (future.isDone())
future.get();
} catch (CancellationException ce) {
t = ce;
} catch (ExecutionException ee) {
t = ee.getCause();
} catch (InterruptedException ie) {
Thread.currentThread().interrupt(); // ignore/reset
}
}
if (t != null)
logger.error(t.getMessage(), t);
}
项目:centraldogma
文件:CentralDogmaServiceImpl.java
private void handleWatchRepositoryResult(
CompletableFuture<com.linecorp.centraldogma.common.Revision> future,
AsyncMethodCallback resultHandler) {
future.handle(voidFunction((res, cause) -> {
if (cause == null) {
final WatchRepositoryResult wrr = new WatchRepositoryResult();
wrr.setRevision(convert(res));
resultHandler.onComplete(wrr);
} else if (cause instanceof CancellationException) {
if (watchService.isServerStopping()) {
resultHandler.onError(new CentralDogmaException(ErrorCode.SHUTTING_DOWN));
} else {
resultHandler.onComplete(CentralDogmaConstants.EMPTY_WATCH_REPOSITORY_RESULT);
}
} else {
logAndInvokeOnError("watchRepository", resultHandler, cause);
}
}));
}
项目:letv
文件:Task.java
public static <TResult> Task<TResult> call(final Callable<TResult> callable, Executor executor, final CancellationToken ct) {
final TaskCompletionSource tcs = create();
executor.execute(new Runnable() {
public void run() {
if (ct == null || !ct.isCancellationRequested()) {
try {
tcs.setResult(callable.call());
return;
} catch (CancellationException e) {
tcs.setCancelled();
return;
} catch (Exception e2) {
tcs.setError(e2);
return;
}
}
tcs.setCancelled();
}
});
return tcs.getTask();
}
项目:guava-mock
文件:TestingExecutorsTest.java
public void testNoOpScheduledExecutorInvokeAll() throws ExecutionException, InterruptedException {
ListeningScheduledExecutorService executor = TestingExecutors.noOpScheduledExecutor();
taskDone = false;
Callable<Boolean> task = new Callable<Boolean>() {
@Override public Boolean call() {
taskDone = true;
return taskDone;
}
};
List<Future<Boolean>> futureList = executor.invokeAll(
ImmutableList.of(task), 10, TimeUnit.MILLISECONDS);
Future<Boolean> future = futureList.get(0);
assertFalse(taskDone);
assertTrue(future.isDone());
try {
future.get();
fail();
} catch (CancellationException e) {
// pass
}
}
项目:openjdk-jdk10
文件:CountedCompleterTest.java
/**
* timed get of a forked task throws exception when task cancelled
*/
public void testCancelledForkTimedGetSingleton() throws Exception {
ForkJoinTask a = new CheckedRecursiveAction() {
protected void realCompute() throws Exception {
CCF f = new LCCF(8);
assertTrue(f.cancel(true));
assertSame(f, f.fork());
try {
f.get(LONG_DELAY_MS, MILLISECONDS);
shouldThrow();
} catch (CancellationException success) {
checkCancelled(f);
}
}};
testInvokeOnPool(singletonPool(), a);
}
项目:googles-monorepo-demo
文件:FuturesTest.java
/**
* Very rough equivalent of a timed get, produced by calling the no-arg get method in another
* thread and waiting a short time for it.
*
* <p>We need this to test the behavior of no-arg get methods without hanging the main test thread
* forever in the case of failure.
*/
@CanIgnoreReturnValue
@GwtIncompatible // threads
static <V> V pseudoTimedGetUninterruptibly(final Future<V> input, long timeout, TimeUnit unit)
throws ExecutionException, TimeoutException {
ExecutorService executor = newSingleThreadExecutor();
Future<V> waiter = executor.submit(new Callable<V>() {
@Override
public V call() throws Exception {
return input.get();
}
});
try {
return getUninterruptibly(waiter, timeout, unit);
} catch (ExecutionException e) {
propagateIfInstanceOf(e.getCause(), ExecutionException.class);
propagateIfInstanceOf(e.getCause(), CancellationException.class);
throw failureWithCause(e, "Unexpected exception");
} finally {
executor.shutdownNow();
// TODO(cpovirk: assertTrue(awaitTerminationUninterruptibly(executor, 10, SECONDS));
}
}
项目:Hitalk
文件:TaskTest.java
private void runTaskTest(Callable<Task<?>> callable) {
try {
Task<?> task = callable.call();
task.waitForCompletion();
if (task.isFaulted()) {
Exception error = task.getError();
if (error instanceof RuntimeException) {
throw (RuntimeException) error;
}
throw new RuntimeException(error);
} else if (task.isCancelled()) {
throw new RuntimeException(new CancellationException());
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
项目:firebase-admin-java
文件:RevivingScheduledExecutor.java
@Override
protected void afterExecute(Runnable runnable, Throwable throwable) {
super.afterExecute(runnable, throwable);
if (throwable == null && runnable instanceof Future<?>) {
Future<?> future = (Future<?>) runnable;
try {
// Not all Futures will be done, e.g. when used with scheduledAtFixedRate
if (future.isDone()) {
future.get();
}
} catch (CancellationException ce) {
// Cancellation exceptions are okay, we expect them to happen sometimes
} catch (ExecutionException ee) {
throwable = ee.getCause();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
if (throwable == REVIVE_THREAD_EXCEPTION) {
// Re-throwing this exception will kill the thread and cause
// ScheduledThreadPoolExecutor to
// spawn a new thread.
throw (RuntimeException) throwable;
} else if (throwable != null) {
handleException(throwable);
}
}
项目:MockBukkit
文件:ScheduledTaskTest.java
@Test(expected = CancellationException.class)
public void run_Cancelled_ThrowsException()
{
AtomicBoolean executed = new AtomicBoolean(false);
ScheduledTask task = new ScheduledTask(0, null, true, 0, () -> {
executed.set(true);
});
task.cancel();
task.run();
}
项目:guava-mock
文件:AbstractFutureCancellationCauseTest.java
public void testCancel_notDoneNoInterrupt() throws Exception {
Future<?> future = newFutureInstance();
assertTrue(future.cancel(false));
assertTrue(future.isCancelled());
assertTrue(future.isDone());
try {
future.get();
fail("Expected CancellationException");
} catch (CancellationException e) {
assertNotNull(e.getCause());
}
}
项目:guava-mock
文件:SettableFutureTest.java
public void testCancel_resultCancelsInner() throws Exception {
SettableFuture<Object> async = SettableFuture.create();
SettableFuture<Object> inner = SettableFuture.create();
async.setFuture(inner);
async.cancel(false);
assertTrue(inner.isCancelled());
assertFalse(inner.wasInterrupted());
try {
inner.get();
fail("Expected CancellationException");
} catch (CancellationException expected) { /* expected */ }
}
项目:GitHub
文件:RequestFutureTarget.java
private synchronized R doGet(Long timeoutMillis)
throws ExecutionException, InterruptedException, TimeoutException {
if (assertBackgroundThread && !isDone()) {
Util.assertBackgroundThread();
}
if (isCancelled) {
throw new CancellationException();
} else if (loadFailed) {
throw new ExecutionException(exception);
} else if (resultReceived) {
return resource;
}
if (timeoutMillis == null) {
waiter.waitForTimeout(this, 0);
} else if (timeoutMillis > 0) {
waiter.waitForTimeout(this, timeoutMillis);
}
if (Thread.interrupted()) {
throw new InterruptedException();
} else if (loadFailed) {
throw new GlideExecutionException(exception);
} else if (isCancelled) {
throw new CancellationException();
} else if (!resultReceived) {
throw new TimeoutException();
}
return resource;
}
项目:RxJava3-preview
文件:SingleTakeUntilTest.java
@Test
public void otherOnCompleteCompletable() {
PublishSubject<Integer> pp = PublishSubject.create();
PublishSubject<Integer> source = PublishSubject.create();
TestObserver<Integer> ts = source.single(-99).takeUntil(pp.ignoreElements())
.test();
pp.onComplete();
ts.assertFailure(CancellationException.class);
}
项目:GitHub
文件:ListDataSourceTest.java
private void assertDataSourceCancelled() {
verify(mDataSubscriber).onFailure(mListDataSource);
verifyNoMoreInteractions(mDataSubscriber);
assertFalse(mListDataSource.hasResult());
assertTrue(mListDataSource.hasFailed());
assertTrue(mListDataSource.isFinished());
assertTrue(mListDataSource.getFailureCause() instanceof CancellationException);
assertNull(mListDataSource.getResult());
}
项目:guava-mock
文件:AbstractListenableFutureTest.java
public void testListenersNotifiedOnError() throws Exception {
final CountDownLatch successLatch = new CountDownLatch(1);
final CountDownLatch listenerLatch = new CountDownLatch(1);
ExecutorService exec = Executors.newCachedThreadPool();
future.addListener(new Runnable() {
@Override
public void run() {
listenerLatch.countDown();
}
}, exec);
new Thread(new Runnable() {
@Override
public void run() {
try {
future.get();
} catch (CancellationException expected) {
successLatch.countDown();
} catch (Exception ignored) {
// No success latch count down.
}
}
}).start();
future.cancel(true);
assertTrue(future.isCancelled());
assertTrue(future.isDone());
assertTrue(successLatch.await(200, TimeUnit.MILLISECONDS));
assertTrue(listenerLatch.await(200, TimeUnit.MILLISECONDS));
latch.countDown();
exec.shutdown();
exec.awaitTermination(100, TimeUnit.MILLISECONDS);
}
项目:Pluto-Android
文件:AsyncTask.java
/**
* Creates a new asynchronous task. This constructor must be invoked on the UI thread.
*/
public AsyncTask() {
mWorker = new WorkerRunnable<Params, Result>() {
public Result call() throws Exception {
mTaskInvoked.set(true);
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
//noinspection unchecked
return postResult(doInBackground(mParams));
}
};
mFuture = new FutureTask<Result>(mWorker) {
@Override
protected void done() {
try {
postResultIfNotInvoked(get());
} catch (InterruptedException e) {
LogUtils.error(LOG_TAG, e.toString());
} catch (ExecutionException e) {
throw new RuntimeException("An error occured while executing doInBackground()",
e.getCause());
} catch (CancellationException e) {
postResultIfNotInvoked(null);
}
}
};
}
项目:guava-mock
文件:FuturesTransformAsyncTest.java
public void testFutureGetThrowsCancellationIfOutputCancelled()
throws Exception {
inputFuture.set(SLOW_OUTPUT_VALID_INPUT_DATA);
outputFuture.cancel(true); // argument is ignored
try {
resultFuture.get();
fail("Result future must throw CancellationException"
+ " if function output future is cancelled.");
} catch (CancellationException expected) {}
}
项目:incubator-netbeans
文件:ToolTipAnnotation.java
@Override
protected Pair<String, Object> evaluate(String expression, DebuggerEngine engine) throws CancellationException {
Session session = engine.lookupFirst(null, Session.class);
if (engine != session.getEngineForLanguage(JSUtils.JS_STRATUM)) {
return null;
}
JPDADebugger d = engine.lookupFirst(null, JPDADebugger.class);
if (d == null) {
return null;
}
CallStackFrame frame = d.getCurrentCallStackFrame();
if (frame == null) {
return null;
}
String toolTipText;
JSVariable jsresult = null;
try {
Variable result = DebuggerSupport.evaluate(d, frame, expression);
if (result == null) {
throw new CancellationException();
}
if (result instanceof ObjectVariable) {
jsresult = JSVariable.createIfScriptObject(d, (ObjectVariable) result, expression);
}
if (jsresult != null) {
toolTipText = expression + " = " + jsresult.getValue();
} else {
toolTipText = expression + " = " + DebuggerSupport.getVarValue(d, result);
}
} catch (InvalidExpressionException ex) {
toolTipText = expression + " = >" + ex.getMessage () + "<";
}
return Pair.of(toolTipText, (Object) jsresult);
}
项目:hashsdn-controller
文件:PingPongTransactionChain.java
/**
* Transaction cancellation is a heavyweight operation. We only support cancelation of a locked transaction
* and return false for everything else. Cancelling such a transaction will result in all transactions in the
* batch to be cancelled.
*
* @param tx Backend shared transaction
* @param frontendTx
* @param isOpen indicator whether the transaction was already closed
*/
synchronized void cancelTransaction(final PingPongTransaction tx, final DOMDataReadWriteTransaction frontendTx) {
// Attempt to unlock the operation.
final boolean lockedMatch = LOCKED_UPDATER.compareAndSet(this, tx, null);
Verify.verify(lockedMatch, "Cancelling transaction %s collided with locked transaction %s", tx, lockedTx);
// Cancel the backend transaction, so we do not end up leaking it.
final boolean backendCancelled = tx.getTransaction().cancel();
if (failed) {
// The transaction has failed, this is probably the user just clearing up the transaction they had. We have
// already cancelled the transaction anyway,
return;
} else if (!backendCancelled) {
LOG.warn("Backend transaction cannot be cancelled during cancellation of {}, attempting to continue", tx);
}
// We have dealt with canceling the backend transaction and have unlocked the transaction. Since we are still
// inside the synchronized block, any allocations are blocking on the slow path. Now we have to decide the fate
// of this transaction chain.
//
// If there are no other frontend transactions in this batch we are aligned with backend state and we can
// continue processing.
if (frontendTx.equals(tx.getFrontendTransaction())) {
LOG.debug("Cancelled transaction {} was head of the batch, resuming processing", tx);
return;
}
// There are multiple frontend transactions in this batch. We have to report them as failed, which dooms this
// transaction chain, too. Since we just came off of a locked transaction, we do not have a ready transaction
// at the moment, but there may be some transaction in-flight. So we proceed to shutdown the backend chain
// and mark the fact that we should be turning its completion into a failure.
deadTx = new SimpleImmutableEntry<>(tx,
new CancellationException("Transaction " + frontendTx + " canceled").fillInStackTrace());
delegate.close();
}
项目:googles-monorepo-demo
文件:FuturesTransformAsyncTest.java
public void testFutureCancelBeforeInputCompletion() throws Exception {
assertTrue(resultFuture.cancel(true));
assertTrue(resultFuture.isCancelled());
assertTrue(inputFuture.isCancelled());
assertFalse(outputFuture.isCancelled());
try {
resultFuture.get();
fail("Result future is cancelled and should have thrown a"
+ " CancellationException");
} catch (CancellationException expected) {}
}
项目:incubator-netbeans
文件:RequestProcessor.java
@Override
public Void get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
if (cancelled.get()) {
throw new CancellationException();
}
long millis = TimeUnit.MILLISECONDS.convert(timeout, unit);
t.waitFinished(millis);
if (cancelled.get()) {
throw new CancellationException();
}
return null;
}
项目:googles-monorepo-demo
文件:AbstractFuture.java
@Override
public void run() {
if (isCancelled()) {
return;
}
if (delegate instanceof AbstractFuture) {
AbstractFuture<? extends V> other = (AbstractFuture<? extends V>) delegate;
value = other.value;
throwable = other.throwable;
mayInterruptIfRunning = other.mayInterruptIfRunning;
state = other.state;
notifyAndClearListeners();
return;
}
/*
* Almost everything in GWT is an AbstractFuture (which is as good as TrustedFuture under
* GWT). But ImmediateFuture and UncheckedThrowingFuture aren't, so we still need this case.
*/
try {
forceSet(getDone(delegate));
} catch (ExecutionException exception) {
forceSetException(exception.getCause());
} catch (CancellationException cancellation) {
cancel(false);
} catch (Throwable t) {
forceSetException(t);
}
}
项目:LaunchEnr
文件:LauncherModel.java
private void verifyNotStopped() throws CancellationException {
synchronized (LoaderTask.this) {
if (mStopped) {
throw new CancellationException("Loader stopped");
}
}
}
项目:guava-mock
文件:SettableFutureTest.java
public void testCancel_innerCancelsAsync() throws Exception {
SettableFuture<Object> async = SettableFuture.create();
SettableFuture<Object> inner = SettableFuture.create();
async.setFuture(inner);
inner.cancel(true);
assertTrue(async.isCancelled());
try {
async.get();
fail("Expected CancellationException");
} catch (CancellationException expected) { /* expected */ }
}
项目:Uranium
文件:CraftFuture.java
public T get() throws CancellationException, InterruptedException, ExecutionException {
try {
return get(0, TimeUnit.MILLISECONDS);
} catch (final TimeoutException e) {
throw new Error(e);
}
}