Package | Description |
---|---|
org.jctools.queues |
This package aims to fill a gap in current JDK implementations in offering lock free (wait free where possible)
queues for inter-thread message passing with finer grained guarantees and an emphasis on performance.
At the time of writing the only lock free queue available in the JDK is ConcurrentLinkedQueue which is an unbounded multi-producer, multi-consumer queue which
is further encumbered by the need to implement the full range of Queue methods. |
org.jctools.util |
Modifier and Type | Class and Description |
---|---|
class |
IndexedQueueSizeUtil
A note to maintainers on index assumptions: in a single threaded world it would seem intuitive to assume:
|
static interface |
IndexedQueueSizeUtil.IndexedQueue |
(package private) class |
LinkedArrayQueueUtil
This is used for method substitution in the LinkedArray classes code generation.
|
class |
MessagePassingQueueUtil |
(package private) class |
MpmcUnboundedXaddChunk<E> |
(package private) class |
MpscUnboundedXaddChunk<E> |
(package private) class |
MpUnboundedXaddChunk<R,E> |
interface |
SupportsIterator
Tagging interface to help testing
|
Modifier and Type | Interface and Description |
---|---|
interface |
PortableJvmInfo
JVM Information that is standard and available on all JVMs (i.e.
|
class |
Pow2
Power of 2 utility functions.
|
class |
RangeUtil |
class |
UnsafeAccess
Why should we resort to using Unsafe?
To construct class fields which allow volatile/ordered/plain access: This requirement is covered by AtomicReferenceFieldUpdater and similar but their performance is arguably worse than the DIY approach
(depending on JVM version) while Unsafe intrinsification is a far lesser challenge for JIT compilers. |
interface |
UnsafeJvmInfo |
class |
UnsafeLongArrayAccess |
class |
UnsafeRefArrayAccess |