Package org.apache.cassandra.utils.concurrent
package org.apache.cassandra.utils.concurrent
-
ClassDescriptionOur default
Futureimplementation, with all state being managed without locks (except those used by the JVM).Accumulator<E>A simple append-only collection supporting an unbounded number of concurrent readers/writers, but a bounded number of items.AsyncFuture<V>Our defaultFutureimplementation, with all state being managed without locks (except those used by the JVM).AsyncPromise<V>ExtendsAsyncFutureto implement thePromiseinterface.A generic signal consumer, supporting all of the typical patterns used in Cassandra.A barebones asynchronousAwaitable.A barebonesAwaitablethat uses mutual exclusion.Simpler API than java.util.concurrent.Condition; would be nice to extend it, but also nice to share API with Future, for which Netty's API is incompatible with java.util.concurrent.ConditionAwaitablefor explicit external signals.An asynchronousCondition.AConditionbased on its object monitor.Future<V>A Future that integrates several different (but equivalent) APIs used within Cassandra into a single concept, integrating also with ourAwaitableabstraction, to overall improve coherency and clarity in the codebase.Netty's PromiseCombiner is not threadsafe, and we combine futures from multiple event executors.IntrusiveStack<T extends IntrusiveStack<T>>An efficient stack/list that is expected to be ordinarily either empty or close to, and for which we need concurrent insertions and do not need to support removal - i.e.A simple thread local object reuse facility with limited capacity and no attempt at rebalancing pooling between threads.LoadingMap<K,V> An extension ofNonBlockingHashMapwhere all values are wrapped byFuture.Thrown when unloading a value failed.A rate limiter implementation that allows callers to reserve permits that may only be available in the future, delegating to them decisions about how to schedule/delay work and whether or not to block execution to do so.A class for providing synchronization between producers and consumers that do not communicate directly with each other, but where the consumers need to process their work in contiguous batches.Represents a group of identically ordered operations, i.e.Promise<V>A Promise that integratesPromisewith ourFutureAPI to improve clarity and coherence in the codebase.Ref<T>An object that needs ref counting does the two following: - defines a Tidy object that will cleanup once it's gone, (this must retain no references to the object we're tracking (only its resources and how to clean up)) Then, one of two options: 1) Construct a Ref directly pointing to it, and always use this Ref; or 2) - implements RefCounted - encapsulates a Ref, we'll call selfRef, to which it proxies all calls to RefCounted behaviours - users must ensure no references to the selfRef leak, or are retained outside of a method scope.Ref.DirectBufferRef<T extends sun.nio.ch.DirectBuffer>A version ofReffor objects that implementDirectBuffer.RefCounted<T>An object that needs ref counting does the two following: - defines a Tidy object that will cleanup once it's gone, (this must retain no references to the object we're tracking (only its resources and how to clean up)) Then, one of two options: 1) Construct a Ref directly pointing to it, and always use this Ref; or 2) - implements RefCounted - encapsulates a Ref, we'll call selfRef, to which it proxies all calls to RefCounted behaviours - users must ensure no references to the selfRef leak, or are retained outside of a method scope.Refs<T extends RefCounted<T>>A collection of managed Ref references to RefCounted objects, and the objects they are referencing.SelfRefCounted<T extends SelfRefCounted<T>>A simple extension of AutoCloseable, that represents a resource that can be utilised in multiple locations, each managing their own closure of the resource, so that when the last such instance is closed all are.A simple abstract implementation of SharedCloseableSyncFuture<V>Netty's DefaultPromise uses a mutex to coordinate notifiers AND waiters between the eventLoop and the other threads.SyncPromise<V>ExtendsSyncFutureto implement thePromiseinterface.An abstraction for Transactional behaviour.A simple abstract implementation of Transactional behaviour.UncheckedInterruptedException, to be thrown in places where an interrupt is unexpectedA relatively easy to use utility for general purpose thread signalling.A Signal is a one-time-use mechanism for a thread to wait for notification that some condition state has transitioned that it may be interested in (and hence should check if it is).An abstract signal implementation TODO: use intrusive linked listWeighted queue is a wrapper around any blocking queue that turns it into a blocking weighted queue.An implementation of SharedCloseable that wraps a normal AutoCloseable, ensuring its close method is only called when all instances of SharedCloseable have been