Atomic Long
Требования к платформе и версии: Common (2.1)
expect class AtomicLong(value: Long)
Значение Long, которое можно обновлять атомарно.
Особенности реализации для платформ:
При компиляции для бэкенда Native AtomicLong хранит volatile-переменную Long и атомарно обновляет её. Дополнительные сведения о гарантиях атомарности при чтении и записи см. в документации kotlin.concurrent.Volatile.
При компиляции для JVM экземпляры AtomicLong представлены типом java.util.concurrent.atomic.AtomicLong. Сведения о гарантиях для volatile-доступа и обновления атомарных значений см. в спецификации языка Java (17.4 Модель памяти).
Для JS и Wasm реализация AtomicLong тривиальна и не является потокобезопасной, поскольку эти платформы не поддерживают многопоточность.
Требования к платформе и версии: JS (2.1)
actual class AtomicLong(value: Long)
Значение Long, которое можно обновлять атомарно.
Поскольку платформа JS не поддерживает многопоточность, реализация тривиальна и не использует атомарную синхронизацию.
Требования к платформе и версии: JVM (2.1)
actual class AtomicLong(value: Long)
Значение Long, которое можно обновлять атомарно.
Экземпляры AtomicLong представлены типом java.util.concurrent.atomic.AtomicLong и обеспечивают такие же гарантии атомарности.
Требования к платформе и версии: Native (2.1)
actual class AtomicLong(var value: Long)
Значение Long, которое можно обновлять атомарно.
Операция чтения load имеет те же эффекты для памяти, что и чтение свойства Volatile; операция записи store имеет те же эффекты для памяти, что и запись свойства Volatile; операции чтения-изменения-записи, такие как exchange, compareAndSet, compareAndExchange, fetchAndAdd, addAndFetch, имеют те же эффекты для памяти, что и чтение и запись свойства Volatile.
Дополнительные сведения о гарантиях атомарности при чтении и записи см. в документации kotlin.concurrent.Volatile.
Требования к платформе и версии: Wasm-JS (2.1), Wasm-WASI (2.1)
actual class AtomicLong(value: Long)
Значение Long, которое можно обновлять атомарно.
Поскольку платформа Wasm не поддерживает многопоточность, реализация тривиальна и не использует атомарную синхронизацию.
Конструкторы
expect constructor(value: Long)
Создаёт новый AtomicLong, инициализированный указанным значением.
Функции
Начиная с Kotlin: 2.1
expect fun addAndFetch(delta: Long): Long
Атомарно прибавляет указанное значение к текущему значению этого AtomicLong и возвращает новое значение.
Требования к платформе и версии: Native (2.1)
funaddAndGet(delta: Long): Long
Атомарно прибавляет указанное значение к текущему значению и возвращает новое значение.
Требования к платформе и версии: JVM (2.1)
fun AtomicLong.asJavaAtomic(): AtomicLong
Преобразует указанный экземпляр AtomicLong к типу java.util.concurrent.atomic.AtomicLong.
Требования к платформе и версии: Common (2.1), JVM (2.1), Native (2.1), Wasm-JS (2.1), Wasm-WASI (2.1)
expect fun compareAndExchange(expectedValue: Long, newValue: Long): Long
Атомарно записывает указанное новое значение в этот AtomicLong, если текущее значение равно ожидаемому значению, и в любом случае возвращает старое значение.
Требования к платформе и версии: JS (2.1)
actual fun compareAndExchange(expectedValue: Long, newValue: Long): Long
Атомарно записывает указанное новое значение в этот AtomicLong, если текущее значение равно ожидаемому значению, и в любом случае возвращает старое значение.
Требования к платформе и версии: Common (2.1), JVM (2.1), Native (2.1), Wasm-JS (2.1), Wasm-WASI (2.1)
expect fun compareAndSet(expectedValue: Long, newValue: Long): Boolean
Атомарно записывает указанное новое значение в этот AtomicLong, если текущее значение равно ожидаемому значению; возвращает true, если операция выполнена успешно, и false только в том случае, если текущее значение не равно ожидаемому.
Требования к платформе и версии: JS (2.1)
actual fun compareAndSet(expectedValue: Long, newValue: Long): Boolean
Атомарно записывает указанное новое значение в этот AtomicLong, если текущее значение равно ожидаемому значению; возвращает true, если операция выполнена успешно, и false только в том случае, если текущее значение не равно ожидаемому.
Требования к платформе и версии: Common (2.1)
fun AtomicLong.decrementAndFetch(): Long
Атомарно уменьшает текущее значение этого AtomicLong на единицу и возвращает новое значение.
Требования к платформе и версии: Native (2.1)
fundecrementAndGet(): Long
Атомарно уменьшает текущее значение на единицу и возвращает новое значение.
Требования к платформе и версии: Common (2.1), JS (2.1)
expect fun exchange(newValue: Long): Long
Атомарно записывает указанное новое значение в этот AtomicLong и возвращает старое значение.
Требования к платформе и версии: JVM (2.1), Wasm-JS (2.1), Wasm-WASI (2.1)
actual fun exchange(newValue: Long): Long
Атомарно записывает указанное новое значение в этот AtomicLong и возвращает старое значение.
Требования к платформе и версии: Native (2.1)
actual fun exchange(newValue: Long): Long
Атомарно записывает новое значение в этот AtomicLong и возвращает старое значение.
Начиная с Kotlin: 2.1
expect fun fetchAndAdd(delta: Long): Long
Атомарно прибавляет указанное значение к текущему значению этого AtomicLong и возвращает старое значение.
Требования к платформе и версии: Common (2.1)
fun AtomicLong.fetchAndDecrement(): Long
Атомарно уменьшает текущее значение этого AtomicLong на единицу и возвращает старое значение.
Требования к платформе и версии: Common (2.1)
fun AtomicLong.fetchAndIncrement(): Long
Атомарно увеличивает текущее значение этого AtomicLong на единицу и возвращает старое значение.
Начиная с Kotlin: 2.2
expect inline fun AtomicLong.fetchAndUpdate(transform: (Long) -> Long): Long
Атомарно обновляет значение этого AtomicLong, используя значение, полученное при вызове функции transform для текущего значения, и возвращает значение, заменённое обновлённым.
Требования к платформе и версии: Native (2.1)
fungetAndAdd(delta: Long): Long
Атомарно прибавляет указанное значение к текущему значению и возвращает старое значение.
Требования к платформе и версии: Native (2.1)
fungetAndDecrement(): Long
Атомарно уменьшает текущее значение на единицу и возвращает старое значение.
Требования к платформе и версии: Native (2.1)
fungetAndIncrement(): Long
Атомарно увеличивает текущее значение на единицу и возвращает старое значение.
Требования к платформе и версии: Native (2.1)
fungetAndSet(newValue: Long): Long
Атомарно устанавливает указанное новое значение и возвращает старое значение.
Требования к платформе и версии: Common (2.1)
fun AtomicLong.incrementAndFetch(): Long
Атомарно увеличивает текущее значение этого AtomicLong на единицу и возвращает новое значение.
Требования к платформе и версии: Native (2.1)
funincrementAndGet(): Long
Атомарно увеличивает текущее значение на единицу и возвращает новое значение.
Требования к платформе и версии: Common (2.1)
operator fun AtomicLong.minusAssign(delta: Long)
Атомарно вычитает указанное значение из текущего значения этого AtomicLong.
Требования к платформе и версии: Common (2.1)
operator fun AtomicLong.plusAssign(delta: Long)
Атомарно прибавляет указанное значение к текущему значению этого AtomicLong.
Начиная с Kotlin: 2.1
expect fun store(newValue: Long)
Атомарно записывает новое значение в этот AtomicLong.
Начиная с Kotlin: 2.2
expect inline fun AtomicLong.update(transform: (Long) -> Long)
Атомарно обновляет значение этого AtomicLong, используя значение, полученное при вызове функции transform для текущего значения.
Начиная с Kotlin: 2.2
expect inline fun AtomicLong.updateAndFetch(transform: (Long) -> Long): Long
Атомарно обновляет значение этого AtomicLong, используя значение, полученное при вызове функции 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-long/index.html