Atomic Reference
Требования к платформе и версии: Common (2.1)
expect class AtomicReference<T>(value: T)
Ссылка на объект, значение которой можно обновлять атомарно.
Особенности реализации для конкретных платформ:
При компиляции для бэкенда Native AtomicReference хранит volatile-переменную типа T и атомарно обновляет её. Дополнительные сведения о гарантиях атомарности чтения и записи см. в документации kotlin.concurrent.Volatile.
При компиляции для JVM экземпляры AtomicReference представлены типом java.util.concurrent.atomic.AtomicReference. Сведения о гарантиях volatile-доступа и обновления атомарных переменных см. в спецификации языка Java (17.4 Модель памяти).
Для JS и Wasm реализация AtomicReference тривиальна и не является потокобезопасной, поскольку эти платформы не поддерживают многопоточность.
Требования к платформе и версии: JS (2.1)
actual class AtomicReference<T>(value: T)
Ссылка на объект, значение которой можно обновлять атомарно.
Поскольку платформа JS не поддерживает многопоточность, реализация тривиальна и не выполняет атомарную синхронизацию.
Требования к платформе и версии: JVM (2.1)
actual class AtomicReference<T>(value: T)
Ссылка на объект, значение которой можно обновлять атомарно.
Экземпляры AtomicReference представлены типом java.util.concurrent.atomic.AtomicReference и обеспечивают те же гарантии атомарности.
Требования к платформе и версии: Native (2.1)
actual class AtomicReference<T>(var value: T)
Ссылка на объект, значение которой можно обновлять атомарно.
Операция чтения load имеет те же эффекты для памяти, что и чтение свойства Volatile; операция записи store имеет те же эффекты для памяти, что и запись свойства Volatile; операции чтения-модификации-записи, такие как exchange, compareAndSet, compareAndExchange, имеют те же эффекты для памяти, что и чтение и запись свойства Volatile.
Дополнительные сведения о гарантиях атомарности чтения и записи см. в документации kotlin.concurrent.Volatile.
Требования к платформе и версии: Wasm-JS (2.1), Wasm-WASI (2.1)
actual class AtomicReference<T>(value: T)
Ссылка на объект, значение которой можно обновлять атомарно.
Поскольку платформа Wasm не поддерживает многопоточность, реализация тривиальна и не выполняет атомарную синхронизацию.
Конструкторы
expect constructor(value: T)
Создаёт новый AtomicReference, инициализированный указанным значением.
Функции
Требования к платформе и версии: JVM (2.1)
fun <T> AtomicReference<T>.asJavaAtomic(): AtomicReference<T>
Приводит указанный экземпляр AtomicReference
Начиная с Kotlin: 2.1
expect fun compareAndExchange(expectedValue: T, newValue: T): T
Атомарно записывает указанное новое значение в этот AtomicReference, если текущее значение равно ожидаемому значению, и в любом случае возвращает старое значение.
Начиная с Kotlin: 2.1
expect fun compareAndSet(expectedValue: T, newValue: T): Boolean
Атомарно записывает указанное новое значение в этот AtomicReference, если текущее значение равно ожидаемому значению; возвращает true, если операция выполнена успешно, и false только в том случае, если текущее значение не равно ожидаемому.
Требования к платформе и версии: Common (2.1)
expect fun exchange(newValue: T): T
Атомарно записывает указанное новое значение в этот AtomicReference и возвращает старое значение.
Требования к платформе и версии: JS (2.1), JVM (2.1), Native (2.1), Wasm-JS (2.1), Wasm-WASI (2.1)
actual fun exchange(newValue: T): T
Атомарно записывает указанное новое значение в этот AtomicReference и возвращает старое значение.
Начиная с Kotlin: 2.2
expect inline fun <T> AtomicReference<T>.fetchAndUpdate(transform: (T) -> T): T
Атомарно обновляет значение этого AtomicReference, используя значение, полученное вызовом функции transform для текущего значения, и возвращает значение, заменённое обновлённым.
Требования к платформе и версии: Native (2.1)
fungetAndSet(newValue: T): T
Атомарно присваивает значение, указанное в качестве нового значения, и возвращает старое значение.
Начиная с Kotlin: 2.1
expect fun store(newValue: T)
Атомарно записывает новое значение в этот AtomicReference.
Начиная с Kotlin: 2.2
expect inline fun <T> AtomicReference<T>.update(transform: (T) -> T)
Атомарно обновляет значение этого AtomicReference, используя значение, полученное вызовом функции transform для текущего значения.
Начиная с Kotlin: 2.2
expect inline fun <T> AtomicReference<T>.updateAndFetch(transform: (T) -> T): T
Атомарно обновляет значение этого AtomicReference, используя значение, полученное вызовом функции transform для текущего значения, и возвращает новое значение.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.concurrent.atomics/-atomic-reference/