Added in API level 1

AtomicStampedReference

open class AtomicStampedReference<V : Any!>
kotlin.Any
   ↳ java.util.concurrent.atomic.AtomicStampedReference

An AtomicStampedReference maintains an object reference along with an integer "stamp", that can be updated atomically.

Implementation note: This implementation maintains stamped references by creating internal objects representing "boxed" [reference, integer] pairs.

Summary

Public constructors
AtomicStampedReference(initialRef: V, initialStamp: Int)

Creates a new AtomicStampedReference with the given initial values.

Public methods
open Boolean
attemptStamp(expectedReference: V, newStamp: Int)

Atomically sets the value of the stamp to the given update value if the current reference is == to the expected reference.

open Boolean
compareAndSet(expectedReference: V, newReference: V, expectedStamp: Int, newStamp: Int)

Atomically sets the value of both the reference and stamp to the given update values if the current reference is == to the expected reference and the current stamp is equal to the expected stamp.

open V
get(stampHolder: IntArray!)

Returns the current values of both the reference and the stamp.

open V

Returns the current value of the reference.

open Int

Returns the current value of the stamp.

open Unit
set(newReference: V, newStamp: Int)

Unconditionally sets the value of both the reference and stamp.

open Boolean
weakCompareAndSet(expectedReference: V, newReference: V, expectedStamp: Int, newStamp: Int)

Atomically sets the value of both the reference and stamp to the given update values if the current reference is == to the expected reference and the current stamp is equal to the expected stamp.

Public constructors

AtomicStampedReference

Added in API level 1
AtomicStampedReference(
    initialRef: V,
    initialStamp: Int)

Creates a new AtomicStampedReference with the given initial values.

Parameters
initialRef V: the initial reference
initialStamp Int: the initial stamp

Public methods

attemptStamp

Added in API level 1
open fun attemptStamp(
    expectedReference: V,
    newStamp: Int
): Boolean

Atomically sets the value of the stamp to the given update value if the current reference is == to the expected reference. Any given invocation of this operation may fail (return false) spuriously, but repeated invocation when the current value holds the expected value and no other thread is also attempting to set the value will eventually succeed.

Parameters
expectedReference V: the expected value of the reference
newStamp Int: the new value for the stamp
Return
Boolean true if successful

compareAndSet

Added in API level 1
open fun compareAndSet(
    expectedReference: V,
    newReference: V,
    expectedStamp: Int,
    newStamp: Int
): Boolean

Atomically sets the value of both the reference and stamp to the given update values if the current reference is == to the expected reference and the current stamp is equal to the expected stamp.

Parameters
expectedReference V: the expected value of the reference
newReference V: the new value for the reference
expectedStamp Int: the expected value of the stamp
newStamp Int: the new value for the stamp
Return
Boolean true if successful

get

Added in API level 1
open fun get(stampHolder: IntArray!): V

Returns the current values of both the reference and the stamp. Typical usage is int[1] holder; ref = v.get(holder); .

Parameters
stampHolder IntArray!: an array of size of at least one. On return, stampHolder[0] will hold the value of the stamp.
Return
V the current value of the reference

getReference

Added in API level 1
open fun getReference(): V

Returns the current value of the reference.

Return
V the current value of the reference

getStamp

Added in API level 1
open fun getStamp(): Int

Returns the current value of the stamp.

Return
Int the current value of the stamp

set

Added in API level 1
open fun set(
    newReference: V,
    newStamp: Int
): Unit

Unconditionally sets the value of both the reference and stamp.

Parameters
newReference V: the new value for the reference
newStamp Int: the new value for the stamp

weakCompareAndSet

Added in API level 1
open fun weakCompareAndSet(
    expectedReference: V,
    newReference: V,
    expectedStamp: Int,
    newStamp: Int
): Boolean

Atomically sets the value of both the reference and stamp to the given update values if the current reference is == to the expected reference and the current stamp is equal to the expected stamp. This operation may fail spuriously and does not provide ordering guarantees, so is only rarely an appropriate alternative to compareAndSet.

Parameters
expectedReference V: the expected value of the reference
newReference V: the new value for the reference
expectedStamp Int: the expected value of the stamp
newStamp Int: the new value for the stamp
Return
Boolean true if successful