/** * Construct a Disposable by wrapping a Future that is * cancelled exactly once when the Disposable is disposed. * @param future the Future to wrap * @return the new Disposable instance */ @NonNull public static Disposable fromFuture(@NonNull Future<?> future) { ObjectHelper.requireNonNull(future, "future is null"); return fromFuture(future, true); }
/** * Construct a Disposable by wrapping a Future that is * cancelled exactly once when the Disposable is disposed. * @param future the Future to wrap * @return the new Disposable instance */ @NonNull public static Disposable fromFuture(@NonNull Future<?> future) { ObjectHelper.requireNonNull(future, "future is null"); return fromFuture(future, true); }
/** * Construct a Disposable by wrapping a Future that is * cancelled exactly once when the Disposable is disposed. * @param future the Future to wrap * @return the new Disposable instance */ @NonNull public static Disposable fromFuture(@NonNull Future<?> future) { ObjectHelper.requireNonNull(future, "future is null"); return fromFuture(future, true); }
@Test public void normal() { FutureTask<Object> ft = new FutureTask<Object>(Functions.EMPTY_RUNNABLE, null); Disposable d = Disposables.fromFuture(ft); assertFalse(d.isDisposed()); d.dispose(); assertTrue(d.isDisposed()); d.dispose(); assertTrue(d.isDisposed()); assertTrue(ft.isCancelled()); }
@Test public void interruptible() { FutureTask<Object> ft = new FutureTask<Object>(Functions.EMPTY_RUNNABLE, null); Disposable d = Disposables.fromFuture(ft, true); assertFalse(d.isDisposed()); d.dispose(); assertTrue(d.isDisposed()); d.dispose(); assertTrue(d.isDisposed()); assertTrue(ft.isCancelled()); }