Package com.google.common.util.concurrent
@ParametersAreNonnullByDefault
package com.google.common.util.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.
-
ClassDescriptionAbstractCatchingFuture<V,
X extends Throwable, F, T> Implementations ofFutures.catching*.AbstractCatchingFuture.AsyncCatchingFuture<V,X extends Throwable> AnAbstractCatchingFuturethat delegates to anAsyncFunctionandAbstractFuture.setFuture(ListenableFuture).AbstractCatchingFuture.CatchingFuture<V,X extends Throwable> Base class for services that can implementAbstractExecutionThreadService.startUp(),AbstractExecutionThreadService.run()andAbstractExecutionThreadService.shutDown()methods.An abstract implementation ofListenableFuture, intended for advanced users only.A special value to represent cancellation and the 'wasInterrupted' bit.A special value to represent failure, whenAbstractFuture.setException(java.lang.Throwable)is called successfully.Listeners also form a stack through theAbstractFuture.listenersfield.A special value that encodes the 'setFuture' state.AbstractFuture.AtomicHelperbased onsynchronizedand volatile writes.Tag interface marking trusted subclasses.A less abstract subclass of AbstractFuture.AbstractFuture.AtomicHelperbased onUnsafe.Waiter links form a Treiber stack, in theAbstractFuture.waitersfield.Base class for services that do not need a thread while "running" but may need one during startup and shutdown.AbstractListeningExecutorServiceimplementation that createsListenableFutureinstances for eachRunnableandCallablesubmitted 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.Schedulerthat provides a convenient way for theAbstractScheduledServiceto use a dynamically changing schedule.A value object that represents an absolute delay until a task should be invoked.Contains the most recently submittedFuture, which may be cancelled or updated, always under a lock.A scheduler defines the policy for how theAbstractScheduledServiceshould run its task.Base class for implementing services that can handleAbstractService.doStart()andAbstractService.doStop()requests, responding to them withAbstractService.notifyStarted()andAbstractService.notifyStopped()callbacks.An immutable snapshot of the current state of the service.AbstractTransformFuture<I,O, F, T> Implementations ofFutures.transform*.AnAbstractTransformFuturethat delegates to anAsyncFunctionandAbstractFuture.setFuture(ListenableFuture).AggregateFuture<InputT,OutputT> A future whose value is derived from a collection of input futures.AggregateFutureState<OutputT>A helper which does some thread-safe operations for aggregate futures, which must be implemented differently in GWT.Computes a value, possibly asynchronously.AsyncFunction<I,O> Transforms a value, possibly asynchronously.Adoublevalue that may be updated atomically.Adoublearray in which elements may be updated atomically.A map containinglongvalues that can be atomically updated.Static utility methods pertaining to classes in thejava.util.concurrent.atomicpackage.Static utility methods pertaining to theCallableinterface.A step in a pipeline of an asynchronous computation.An operation that computes aClosingFutureof a result.A function from an input to aClosingFutureof a result.An operation that computes a result.A function from an input to a result.A builder of aClosingFuturestep that is derived from more than one input step.An operation that returns aClosingFutureresult and may throw an exception.An operation that returns a result and may throw an exception.ClosingFuture.Combiner2<V1,V2> A genericClosingFuture.Combinerthat lets you use a lambda or method reference to combine twoClosingFutures.A function that returns aClosingFuturewhen applied to the values of the two futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture).A function that returns a value when applied to the values of the two futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture).ClosingFuture.Combiner3<V1,V2, V3> A genericClosingFuture.Combinerthat lets you use a lambda or method reference to combine threeClosingFutures.ClosingFuture.Combiner3.AsyncClosingFunction3<V1,V2, V3, U> A function that returns aClosingFuturewhen applied to the values of the three futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture).ClosingFuture.Combiner3.ClosingFunction3<V1,V2, V3, U> A function that returns a value when applied to the values of the three futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture).ClosingFuture.Combiner4<V1,V2, V3, V4> A genericClosingFuture.Combinerthat lets you use a lambda or method reference to combine fourClosingFutures.ClosingFuture.Combiner4.AsyncClosingFunction4<V1,V2, V3, V4, U> A function that returns aClosingFuturewhen applied to the values of the four futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture).ClosingFuture.Combiner4.ClosingFunction4<V1,V2, V3, V4, U> 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,V2, V3, V4, V5> A genericClosingFuture.Combinerthat lets you use a lambda or method reference to combine fiveClosingFutures.ClosingFuture.Combiner5.AsyncClosingFunction5<V1,V2, V3, V4, V5, U> A function that returns aClosingFuturewhen applied to the values of the five futures passed toClosingFuture.whenAllSucceed(ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture, ClosingFuture).ClosingFuture.Combiner5.ClosingFunction5<V1,V2, V3, V4, V5, U> 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 aClosingFuturepipeline is done.An object that can return the value of theClosingFutures that are passed toClosingFuture.whenAllComplete(Iterable)orClosingFuture.whenAllSucceed(Iterable).The state of aClosingFuture.CloseableList.An object that holds the final result of an asynchronousClosingFutureoperation and allows the user to close all the closeable objects that were captured during it for later closing.Represents an operation that accepts aClosingFuture.ValueAndCloserfor the last step in aClosingFuturepipeline.CollectionFuture<V,C> Aggregate future that collects (stores) results of each future.The result of a successfulFuture.Aggregate future that computes its value by calling a callable.TheCycleDetectingLockFactorycreatesReentrantLockinstances andReentrantReadWriteLockinstances that detect potential deadlock by checking for cycles in lock acquisition order.Internal Lock implementations implement theCycleDetectingLockinterface, allowing the detection logic to treat all locks in the same manner.A Throwable used to record a stack trace that illustrates an example of a specific lock acquisition ordering.ALockGraphNodeassociated with each lock instance keeps track of the directed edges in the lock acquisition graph.Pre-definedCycleDetectingLockFactory.Policyimplementations.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.WithExplicitOrderingprovides the additional enforcement of an application-specified ordering of lock acquisitions.Marks all "top-level" types as non-null in a way that is recognized by Kotlin.Errorvariant ofExecutionException.A support class forListenableFutureimplementations to manage their listeners.Serializes execution of tasks, somewhat like an "asynchronoussynchronizedblock." 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 theFutureit returned is done (successful, failed, or cancelled).This class helps avoid a StackOverflowError when large numbers of tasks are submitted withMoreExecutors.directExecutor().This object is unsafely published, but avoids problematic races by relying exclusively on the identity equality of its Thread field so that the task field is only accessed by a single thread.A TimeLimiter implementation which actually does not attempt to limit time at all.FluentFuture<V>AListenableFuturethat supports fluent chains of operations.A less abstract subclass of AbstractFuture.ABlockingDequewhich forwards all its method calls to anotherBlockingDeque.ABlockingQueuewhich forwards all its method calls to anotherBlockingQueue.Forwarding wrapper around aCondition.An executor service which forwards all its method calls to another executor service.FluentFuturethat forwards all calls to a delegate.AFuturewhich forwards all its method calls to another future.A simplified version ofForwardingFuturewhere subclasses can pass in an already constructedFutureas the delegate.AListenableFuturewhich forwards all its method calls to another future.A simplified version ofForwardingListenableFuturewhere subclasses can pass in an already constructedListenableFutureas the delegate.A listening executor service which forwards all its method calls to another listening executor service.Forwarding wrapper around aLock.A callback for accepting the results of aFuturecomputation asynchronously.Static utility methods pertaining to theFutureinterface.SeeFutures.addCallback(ListenableFuture, FutureCallback, Executor)for behavioral notes.A helper to create a newListenableFuturewhose result is generated from a combination of input futures.A wrapped future that does not propagate cancellation to its delegate.Static methods used to implementFutures.getChecked(Future, Class).Provides a check of whether an exception type is valid for use withFuturesGetChecked.getChecked(Future, Class), possibly using caching.Hidden superclass ofFluentFuturethat provides us a place to declare special GWT versions of theFluentFuture.catchingfamily of methods.Hidden superclass ofFuturesthat provides us a place to declare special GWT versions of theFutures.catchingfamily of methods.Implementation ofFutures.immediateFuture(V).This class is forcom.google.common.util.concurrentuse only!Using this as the blocker object allows introspection and debugging tools to see that the currentRunner thread is blocked on the progress of the interruptor thread, which can help identify deadlocks.Utilities necessary for working with libraries that supply plainFutureinstances.An adapter to turn aFutureinto aListenableFuture.AFuturethat accepts completion listeners.AFutureTaskthat also implements theListenableFutureinterface.Helper interface to implement bothListenableFutureandScheduledFuture.A list of listeners for implementing a concurrency friendly observable object.Method reference-compatible listener event.A special purpose queue/executor that dispatches listener events serially on a configured executor.AnExecutorServicethat returnsListenableFutureinstances.AScheduledExecutorServicethat returnsListenableFutureinstances from itsExecutorServicemethods.A synchronization abstraction supporting waiting on arbitrary boolean conditions.A boolean condition for which a thread may wait.Represents the current application to register shutdown hooks.A utility method to perform unchecked casts to suppress errors produced by nullness analyses.Works around an android bug, where parking for more than INT_MAX seconds can produce an abort signal on 32 bit devices running Android Q.Annotates a "top-level" type-variable usage that takes its nullness from the type argument supplied by the user of the class.Outer class that exists solely to let us writePartially.GwtIncompatibleinstead of plainGwtIncompatible.The presence of this annotation on an API indicates that the method may be used with the Google Web Toolkit (GWT) but that it has some restrictions.Methods factored out so that they can be emulated differently in GWT.A rate limiter.Static utility methods pertaining to theRunnableinterface.Executor ensuring that all Runnables submitted are executed in order, using the provided Executor, and sequentially such that no two will ever be running at the same time.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 aServicegoes through in its lifecycle.The lifecycle states of a service.A manager for monitoring and controlling a set of services.This is never thrown but only used for logging.A listener for the aggregate state changes of the services that are under management.AServiceinstance that does nothing.AServicethat wraps another service and times how long it takes for it to start and also calls theServiceManager.ServiceManagerState.transitionService(Service, State, State), to record the state transitions.An encapsulation of all the mutable state of theServiceManagerthat needs to be accessed by instances ofServiceManager.ServiceListener.Superinterface ofServiceManagerto introduce a bridge method forservicesByState(), to ensure binary compatibility with older Guava versions that specifiedservicesByState()to returnImmutableMultimap.AListenableFuturewhose 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.This implements a "bursty" RateLimiter, where storedPermits are translated to zero throttling.This implements the following function where coldInterval = coldFactor * stableInterval.Striped<L>A stripedLock/Semaphore/ReadWriteLock.Implementation of Striped where 2^k stripes are represented as an array of the same length, eagerly initialized.Implementation of Striped where up to 2^k stripes can be represented, using a ConcurrentMap where the key domain is [0..2^k).Implementation of Striped where up to 2^k stripes can be represented, using an AtomicReferenceArray of size 2^k.Condition object that ensures a strong reference is retained to a specified object.Lock object that ensures a strong reference is retained to a specified object.ReadWriteLock implementation whose read and write locks retain a reference back to this lock.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.Implementation ofFutures#withTimeout.A runnable that is called when the delegate or the timer completes.ARunnableFuturethat also implements theListenableFutureinterface.Factories forThread.UncaughtExceptionHandlerinstances.Unchecked variant ofExecutionException.Unchecked version ofTimeoutException.Utilities for treating interruptible operations as uninterruptible.An abstractExecutorServicethat allows subclasses to wrap tasks before they are submitted to the underlying executor.An abstractScheduledExecutorServicethat allows subclasses to wrap tasks before they are submitted to the underlying executor.