java.lang.invoke.VarHandle
operations.
Instances of classes
java.
,
java.
,
java.
, and
java.
each provide access and updates to a single variable of the
corresponding type. Each class also provides appropriate utility
methods for that type. For example, classes AtomicLong
and
AtomicInteger
provide atomic increment methods. One
application is to generate sequence numbers, as in:
class Sequencer {
private final AtomicLong sequenceNumber
= new AtomicLong(17);
public long next() {
return sequenceNumber.getAndIncrement();
}
}
Arbitrary transformations of the contained value are provided both
by low-level read-modify-write operations such as compareAndSet
and by higher-level methods such as getAndUpdate
.
These classes are not general purpose replacements for java.lang.Integer
and related classes. They do not
define methods such as equals
, hashCode
and compareTo
. Because atomic variables are expected to be mutated,
they are poor choices for hash table keys.
The
java.
,
java.
, and
java.
classes
further extend atomic operation support to arrays of these types.
These classes are also notable in providing volatile
access
semantics for their array elements.
In addition to classes representing single values and arrays,
this package contains Updater classes that can be used to
obtain compareAndSet
and related operations on any selected
volatile
field of any selected class. These classes
predate the introduction of java.
, and are of more limited use.
java.
,
java.
, and
java.
are
reflection-based utilities that provide access to the associated
field types. These are mainly of use in atomic data structures in
which several volatile
fields of the same node (for
example, the links of a tree node) are independently subject to
atomic updates. These classes enable greater flexibility in how
and when to use atomic updates, at the expense of more awkward
reflection-based setup, less convenient usage, and weaker
guarantees.
The java.
class associates a single boolean with a reference. For example, this
bit might be used inside a data structure to mean that the object
being referenced has logically been deleted.
The java.
class associates an integer value with a reference. This may be
used for example, to represent version numbers corresponding to
series of updates.
Modifier and Type | Class and Description |
---|---|
public class | AtomicBoolean
A |
public class | AtomicInteger
An |
public class | AtomicIntegerArray
An |
public abstract class | AtomicIntegerFieldUpdater<
The type of the object holding the updatable field T>A reflection-based utility that enables atomic updates to
designated |
public class | AtomicLong
A |
public class | AtomicLongArray
A |
public abstract class | AtomicLongFieldUpdater<
The type of the object holding the updatable field T>A reflection-based utility that enables atomic updates to
designated |
public class | AtomicMarkableReference<
The type of object referred to by this reference V>An |
public class | AtomicReference<
The type of object referred to by this reference V>An object reference that may be updated atomically. |
public class | AtomicReferenceArray<
The base class of elements held in this array E>An array of object references in which elements may be updated atomically. |
public abstract class | AtomicReferenceFieldUpdater<
The type of the object holding the updatable field T, The type of the field V>A reflection-based utility that enables atomic updates to
designated |
public class | AtomicStampedReference<
The type of object referred to by this reference V>An |
public class | DoubleAccumulator
One or more variables that together maintain a running |
public class | DoubleAdder
One or more variables that together maintain an initially zero
|
public class | LongAccumulator
One or more variables that together maintain a running |
public class | LongAdder
One or more variables that together maintain an initially zero
|
pack-priv abstract class | Striped64
A package-local class holding common representation and mechanics for classes supporting dynamic striping on 64bit values. |