Class Uninterruptibles

java.lang.Object
dev.mccue.guava.concurrent.Uninterruptibles

public final class Uninterruptibles extends Object
Utilities for treating interruptible operations as uninterruptible. In all cases, if a thread is interrupted during such a call, the call continues to block until the result is available or the timeout elapses, and only then re-interrupts the thread.
Since:
10.0
Author:
Anthony Zana
  • Method Details

    • awaitUninterruptibly

      public static void awaitUninterruptibly(CountDownLatch latch)
      Invokes latch.CountDownLatch#await() await() uninterruptibly.
    • awaitUninterruptibly

      public static boolean awaitUninterruptibly(CountDownLatch latch, Duration timeout)
      Invokes latch.CountDownLatch#await(long, TimeUnit) await(timeout, unit) uninterruptibly.
      Since:
      28.0
    • awaitUninterruptibly

      public static boolean awaitUninterruptibly(CountDownLatch latch, long timeout, TimeUnit unit)
      Invokes latch.CountDownLatch#await(long, TimeUnit) await(timeout, unit) uninterruptibly.
    • awaitUninterruptibly

      public static boolean awaitUninterruptibly(Condition condition, Duration timeout)
      Invokes condition.Condition#await(long, TimeUnit) await(timeout, unit) uninterruptibly.
      Since:
      28.0
    • awaitUninterruptibly

      public static boolean awaitUninterruptibly(Condition condition, long timeout, TimeUnit unit)
      Invokes condition.Condition#await(long, TimeUnit) await(timeout, unit) uninterruptibly.
      Since:
      23.6
    • joinUninterruptibly

      public static void joinUninterruptibly(Thread toJoin)
      Invokes toJoin.Thread#join() join() uninterruptibly.
    • joinUninterruptibly

      public static void joinUninterruptibly(Thread toJoin, Duration timeout)
      Invokes unit.TimeUnit#timedJoin(Thread, long) timedJoin(toJoin, timeout) uninterruptibly.
      Since:
      28.0
    • joinUninterruptibly

      public static void joinUninterruptibly(Thread toJoin, long timeout, TimeUnit unit)
      Invokes unit.TimeUnit#timedJoin(Thread, long) timedJoin(toJoin, timeout) uninterruptibly.
    • getUninterruptibly

      @CanIgnoreReturnValue public static <V extends @Nullable Object> V getUninterruptibly(Future<V> future) throws ExecutionException
      Invokes future.Future#get() get() uninterruptibly.

      Similar methods:

      • To retrieve a result from a Future that is already done, use Futures#getDone Futures.getDone.
      • To treat InterruptedException uniformly with other exceptions, use Futures#getChecked(Future, Class) Futures.getChecked.
      • To get uninterruptibility and remove checked exceptions, use Futures#getUnchecked.
      Throws:
      ExecutionException - if the computation threw an exception
      CancellationException - if the computation was cancelled
    • getUninterruptibly

      @CanIgnoreReturnValue public static <V extends @Nullable Object> V getUninterruptibly(Future<V> future, Duration timeout) throws ExecutionException, TimeoutException
      Invokes future.Future#get(long, TimeUnit) get(timeout, unit) uninterruptibly.

      Similar methods:

      • To retrieve a result from a Future that is already done, use Futures#getDone Futures.getDone.
      • To treat InterruptedException uniformly with other exceptions, use Futures#getChecked(Future, Class, long, TimeUnit) Futures.getChecked.
      • To get uninterruptibility and remove checked exceptions, use Futures#getUnchecked.
      Throws:
      ExecutionException - if the computation threw an exception
      CancellationException - if the computation was cancelled
      TimeoutException - if the wait timed out
      Since:
      28.0
    • getUninterruptibly

      @CanIgnoreReturnValue public static <V extends @Nullable Object> V getUninterruptibly(Future<V> future, long timeout, TimeUnit unit) throws ExecutionException, TimeoutException
      Invokes future.Future#get(long, TimeUnit) get(timeout, unit) uninterruptibly.

      Similar methods:

      • To retrieve a result from a Future that is already done, use Futures#getDone Futures.getDone.
      • To treat InterruptedException uniformly with other exceptions, use Futures#getChecked(Future, Class, long, TimeUnit) Futures.getChecked.
      • To get uninterruptibility and remove checked exceptions, use Futures#getUnchecked.
      Throws:
      ExecutionException - if the computation threw an exception
      CancellationException - if the computation was cancelled
      TimeoutException - if the wait timed out
    • takeUninterruptibly

      public static <E> E takeUninterruptibly(BlockingQueue<E> queue)
      Invokes queue.BlockingQueue#take() take() uninterruptibly.
    • putUninterruptibly

      public static <E> void putUninterruptibly(BlockingQueue<E> queue, E element)
      Invokes queue.BlockingQueue#put(Object) put(element) uninterruptibly.
      Throws:
      ClassCastException - if the class of the specified element prevents it from being added to the given queue
      IllegalArgumentException - if some property of the specified element prevents it from being added to the given queue
    • sleepUninterruptibly

      public static void sleepUninterruptibly(Duration sleepFor)
      Invokes unit.TimeUnit#sleep(long) sleep(sleepFor) uninterruptibly.
      Since:
      28.0
    • sleepUninterruptibly

      public static void sleepUninterruptibly(long sleepFor, TimeUnit unit)
      Invokes unit.TimeUnit#sleep(long) sleep(sleepFor) uninterruptibly.
    • tryAcquireUninterruptibly

      public static boolean tryAcquireUninterruptibly(Semaphore semaphore, Duration timeout)
      Invokes semaphore.Semaphore#tryAcquire(int, long, TimeUnit) tryAcquire(1, timeout, unit) uninterruptibly.
      Since:
      28.0
    • tryAcquireUninterruptibly

      public static boolean tryAcquireUninterruptibly(Semaphore semaphore, long timeout, TimeUnit unit)
      Invokes semaphore.Semaphore#tryAcquire(int, long, TimeUnit) tryAcquire(1, timeout, unit) uninterruptibly.
      Since:
      18.0
    • tryAcquireUninterruptibly

      public static boolean tryAcquireUninterruptibly(Semaphore semaphore, int permits, Duration timeout)
      Invokes semaphore.Semaphore#tryAcquire(int, long, TimeUnit) tryAcquire(permits, timeout, unit) uninterruptibly.
      Since:
      28.0
    • tryAcquireUninterruptibly

      public static boolean tryAcquireUninterruptibly(Semaphore semaphore, int permits, long timeout, TimeUnit unit)
      Invokes semaphore.Semaphore#tryAcquire(int, long, TimeUnit) tryAcquire(permits, timeout, unit) uninterruptibly.
      Since:
      18.0
    • tryLockUninterruptibly

      public static boolean tryLockUninterruptibly(Lock lock, Duration timeout)
      Invokes lock.Lock#tryLock(long, TimeUnit) tryLock(timeout, unit) uninterruptibly.
      Since:
      30.0
    • tryLockUninterruptibly

      public static boolean tryLockUninterruptibly(Lock lock, long timeout, TimeUnit unit)
      Invokes lock.Lock#tryLock(long, TimeUnit) tryLock(timeout, unit) uninterruptibly.
      Since:
      30.0
    • awaitTerminationUninterruptibly

      public static void awaitTerminationUninterruptibly(ExecutorService executor)
      Invokes executor.ExecutorService#awaitTermination(long, TimeUnit) awaitTermination(long, TimeUnit) uninterruptibly with no timeout.
      Since:
      30.0
    • awaitTerminationUninterruptibly

      public static boolean awaitTerminationUninterruptibly(ExecutorService executor, Duration timeout)
      Invokes executor.ExecutorService#awaitTermination(long, TimeUnit) awaitTermination(long, TimeUnit) uninterruptibly.
      Since:
      30.0
    • awaitTerminationUninterruptibly

      public static boolean awaitTerminationUninterruptibly(ExecutorService executor, long timeout, TimeUnit unit)
      Invokes executor.ExecutorService#awaitTermination(long, TimeUnit) awaitTermination(long, TimeUnit) uninterruptibly.
      Since:
      30.0