Module dev.mccue.guava.concurrent
Package dev.mccue.guava.concurrent
@CheckReturnValue
@ParametersAreNonnullByDefault
package dev.mccue.guava.concurrent
Concurrency utilities.
Commonly used types include ClosingFuture
, ListenableFuture
, and Service
.
Commonly used utilities include Futures
, MoreExecutors
, ThreadFactoryBuilder
, and Uninterruptibles
.
This package is a part of the open-source Guava library.
-
ClassDescriptionBase class for services that can implement
AbstractExecutionThreadService.startUp()
,AbstractExecutionThreadService.run()
andAbstractExecutionThreadService.shutDown()
methods.AbstractFuture<V extends @Nullable Object>An abstract implementation ofListenableFuture
, intended for advanced users only.Base class for services that do not need a thread while "running" but may need one during startup and shutdown.AbstractListeningExecutorService
implementation that createsListenableFuture
instances for eachRunnable
andCallable
submitted to it.Base class for services that can implementAbstractScheduledService.startUp()
andAbstractScheduledService.shutDown()
but while in the "running" state need to perform a periodic task.AAbstractScheduledService.Scheduler
that provides a convenient way for theAbstractScheduledService
to use a dynamically changing schedule.A value object that represents an absolute delay until a task should be invoked.A scheduler defines the policy for how theAbstractScheduledService
should run its task.Base class for implementing services that can handleAbstractService.doStart()
andAbstractService.doStop()
requests, responding to them withAbstractService.notifyStarted()
andAbstractService.notifyStopped()
callbacks.AsyncCallable<V extends @Nullable Object>Computes a value, possibly asynchronously.Transforms a value, possibly asynchronously.Adouble
value that may be updated atomically.Adouble
array in which elements may be updated atomically.A map containinglong
values that can be atomically updated.Static utility methods pertaining to classes in thejava.util.concurrent.atomic
package.Static utility methods pertaining to theCallable
interface.ClosingFuture<V extends @Nullable Object>A step in a pipeline of an asynchronous computation.ClosingFuture.AsyncClosingCallable<V extends @Nullable Object>An operation that computes aClosingFuture
of a result.A function from an input to aClosingFuture
of a result.ClosingFuture.ClosingCallable<V extends @Nullable Object>An operation that computes a result.A function from an input to a result.A builder of aClosingFuture
step that is derived from more than one input step.ClosingFuture.Combiner.AsyncCombiningCallable<V extends @Nullable Object>An operation that returns aClosingFuture
result and may throw an exception.ClosingFuture.Combiner.CombiningCallable<V extends @Nullable Object>An operation that returns a result and may throw an exception.A genericClosingFuture.Combiner
that lets you use a lambda or method reference to combine twoClosingFuture
s.ClosingFuture.Combiner2.AsyncClosingFunction2<V1 extends @Nullable Object,V2 extends @Nullable Object, U extends @Nullable Object> A function that returns aClosingFuture
when applied to the values of the two futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture)
.ClosingFuture.Combiner2.ClosingFunction2<V1 extends @Nullable Object,V2 extends @Nullable Object, U extends @Nullable Object> A function that returns a value when applied to the values of the two futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture)
.ClosingFuture.Combiner3<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object> A genericClosingFuture.Combiner
that lets you use a lambda or method reference to combine threeClosingFuture
s.ClosingFuture.Combiner3.AsyncClosingFunction3<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, U extends @Nullable Object> A function that returns aClosingFuture
when applied to the values of the three futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture)
.ClosingFuture.Combiner3.ClosingFunction3<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, U extends @Nullable Object> A function that returns a value when applied to the values of the three futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture)
.ClosingFuture.Combiner4<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, V4 extends @Nullable Object> A genericClosingFuture.Combiner
that lets you use a lambda or method reference to combine fourClosingFuture
s.ClosingFuture.Combiner4.AsyncClosingFunction4<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, V4 extends @Nullable Object, U extends @Nullable Object> A function that returns aClosingFuture
when applied to the values of the four futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture)
.ClosingFuture.Combiner4.ClosingFunction4<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, V4 extends @Nullable Object, U extends @Nullable Object> A function that returns a value when applied to the values of the four futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture)
.ClosingFuture.Combiner5<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, V4 extends @Nullable Object, V5 extends @Nullable Object> A genericClosingFuture.Combiner
that lets you use a lambda or method reference to combine fiveClosingFuture
s.ClosingFuture.Combiner5.AsyncClosingFunction5<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, V4 extends @Nullable Object, V5 extends @Nullable Object, U extends @Nullable Object> A function that returns aClosingFuture
when applied to the values of the five futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture)
.ClosingFuture.Combiner5.ClosingFunction5<V1 extends @Nullable Object,V2 extends @Nullable Object, V3 extends @Nullable Object, V4 extends @Nullable Object, V5 extends @Nullable Object, U extends @Nullable Object> A function that returns a value when applied to the values of the five futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture)
.An object that can capture objects to be closed later, when aClosingFuture
pipeline is done.An object that can return the value of theClosingFuture
s that are passed toClosingFuture.whenAllComplete(Iterable)
orClosingFuture.whenAllSucceed(Iterable)
.ClosingFuture.ValueAndCloser<V extends @Nullable Object>An object that holds the final result of an asynchronousClosingFuture
operation and allows the user to close all the closeable objects that were captured during it for later closing.ClosingFuture.ValueAndCloserConsumer<V extends @Nullable Object>Represents an operation that accepts aClosingFuture.ValueAndCloser
for the last step in aClosingFuture
pipeline.TheCycleDetectingLockFactory
createsReentrantLock
instances andReentrantReadWriteLock
instances that detect potential deadlock by checking for cycles in lock acquisition order.Pre-definedCycleDetectingLockFactory.Policy
implementations.Encapsulates the action to be taken when a potential deadlock is encountered.Represents a detected cycle in lock acquisition ordering.CycleDetectingLockFactory.WithExplicitOrdering<E extends Enum<E>>ACycleDetectingLockFactory.WithExplicitOrdering
provides the additional enforcement of an application-specified ordering of lock acquisitions.Error
variant ofExecutionException
.A support class forListenableFuture
implementations to manage their listeners.Serializes execution of tasks, somewhat like an "asynchronoussynchronized
block." Each enqueued callable will not be submitted to its associated executor until the previous callable has returned -- and, if the previous callable was anAsyncCallable
, not until theFuture
it returned is done (successful, failed, or cancelled).A TimeLimiter implementation which actually does not attempt to limit time at all.FluentFuture<V extends @Nullable Object>AListenableFuture
that supports fluent chains of operations.ABlockingDeque
which forwards all its method calls to anotherBlockingDeque
.ABlockingQueue
which forwards all its method calls to anotherBlockingQueue
.An executor service which forwards all its method calls to another executor service.ForwardingFuture<V extends @Nullable Object>AFuture
which forwards all its method calls to another future.ForwardingFuture.SimpleForwardingFuture<V extends @Nullable Object>A simplified version ofForwardingFuture
where subclasses can pass in an already constructedFuture
as the delegate.ForwardingListenableFuture<V extends @Nullable Object>AListenableFuture
which forwards all its method calls to another future.ForwardingListenableFuture.SimpleForwardingListenableFuture<V extends @Nullable Object>A simplified version ofForwardingListenableFuture
where subclasses can pass in an already constructedListenableFuture
as the delegate.A listening executor service which forwards all its method calls to another listening executor service.FutureCallback<V extends @Nullable Object>A callback for accepting the results of aFuture
computation asynchronously.Static utility methods pertaining to theFuture
interface.Futures.FutureCombiner<V extends @Nullable Object>A helper to create a newListenableFuture
whose result is generated from a combination of input futures.Utilities necessary for working with libraries that supply plainFuture
instances.ListenableFuture<V extends @Nullable Object>AFuture
that accepts completion listeners.ListenableFutureTask<V extends @Nullable Object>AFutureTask
that also implements theListenableFuture
interface.ListenableScheduledFuture<V extends @Nullable Object>Helper interface to implement bothListenableFuture
andScheduledFuture
.AnExecutorService
that returnsListenableFuture
instances.AScheduledExecutorService
that returnsListenableFuture
instances from itsExecutorService
methods.A synchronization abstraction supporting waiting on arbitrary boolean conditions.A boolean condition for which a thread may wait.A rate limiter.Static utility methods pertaining to theRunnable
interface.An object with an operational state, plus asynchronousService.startAsync()
andService.stopAsync()
lifecycle methods to transition between states.A listener for the various state changes that aService
goes through in its lifecycle.The lifecycle states of a service.A manager for monitoring and controlling a set of services.A listener for the aggregate state changes of the services that are under management.SettableFuture<V extends @Nullable Object>AListenableFuture
whose result can be set by aSettableFuture.set(Object)
,SettableFuture.setException(Throwable)
orSettableFuture.setFuture(ListenableFuture)
call.A TimeLimiter that runs method calls in the background using anExecutorService
.Striped<L>A stripedLock/Semaphore/ReadWriteLock
.A ThreadFactory builder, providing any combination of these features: whether threads should be marked as daemon threads a naming format a thread priority an uncaught exception handler a backing thread factoryImposes a time limit on method calls.Factories forThread.UncaughtExceptionHandler
instances.Unchecked variant ofExecutionException
.Unchecked version ofTimeoutException
.Utilities for treating interruptible operations as uninterruptible.