# Package org.apache.cassandra.utils.concurrent

Interface Summary

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.

RefCounted.Tidy
SelfRefCounted<T extends SelfRefCounted<T>>
SharedCloseable: 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.
Transactional: An abstraction for Transactional behaviour.
WaitQueue.Signal: 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).

Class Summary
Accumulator<E>: A simple append-only collection supporting an unbounded number of concurrent readers/writers, but a bounded number of items.
Blocker
IntervalLock: This class extends ReentrantReadWriteLock to provide a write lock that can only be acquired at provided intervals.
Locks
OpOrder: 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.
OpOrder.Group: Represents a group of identically ordered operations, i.e.

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.IdentityCollection
Refs<T extends RefCounted<T>>: A collection of managed Ref references to RefCounted objects, and the objects they are referencing.
SharedCloseableImpl: A simple abstract implementation of SharedCloseable
SimpleCondition
Transactional.AbstractTransactional: A simple abstract implementation of Transactional behaviour.
WaitQueue: A relatively easy to use utility for general purpose thread signalling.
WaitQueue.AbstractSignal: An abstract signal implementation
WrappedSharedCloseable: An implementation of SharedCloseable that wraps a normal AutoCloseable, ensuring its close method is only called when all instances of SharedCloseable have been

Enum Summary
Transactional.AbstractTransactional.State