asKotlinAtomicArray
Casts the given java.util.concurrent.atomic.AtomicIntegerArray instance to AtomicIntArray.
@ExperimentalAtomicApifun AtomicIntegerArray.asKotlinAtomicArray(): AtomicIntArray(source)
import kotlin.concurrent.atomics.*
@OptIn(ExperimentalAtomicApi::class)
fun main() {
// Create a Java AtomicIntegerArray
val javaArray = java.util.concurrent.atomic.AtomicIntegerArray(3).apply {
set(0, 1)
set(1, 2)
set(2, 3)
}
// Cast it to Kotlin's AtomicIntArray
val kotlinArray = javaArray.asKotlinAtomicArray()
// Read values
println(kotlinArray[0]) // 1
println(kotlinArray[1]) // 2
println(kotlinArray[2]) // 3
// Atomically update
kotlinArray[0] = 10
println(kotlinArray[0]) // 10
// Atomic get-and-increment
val old = kotlinArray.getAndIncrement(1)
println(old) // 2
println(kotlinArray[1]) // 3
// Atomic add-and-get
val sum = kotlinArray.addAndGet(2, 5)
println(sum) // 8
}