Для создания механизма блокировки, который позволяет однократное переключение состояний, можно использовать атомарные операции или примитивы синхронизации, например, AtomicBoolean в Java/Kotlin. Такой подход гарантирует, что переключение состояния произойдет только один раз, даже при многопоточном доступе.
Каким образом можно создать механизм блокировки, отвечающий за однократное переключение состояний, на уровне программного кода?
Для создания механизма блокировки, который позволяет однократное переключение состояний, можно использовать атомарные операции или примитивы синхронизации, например, AtomicBoolean в Java/Kotlin.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для создания механизма блокировки, который позволяет однократное переключение состояний, можно использовать атомарные операции или примитивы синхронизации, например, AtomicBoolean в Java/Kotlin. Такой подход гарантирует, что переключение состояния произойдет только один раз, даже при многопоточном доступе.
Пример на Kotlin:
import java.util.concurrent.atomic.AtomicBoolean
class OneTimeSwitcher {
private val switched = AtomicBoolean(false)
fun switch(): Boolean {
// Попытка переключить состояние с false на true
return switched.compareAndSet(false, true)
}
}
fun main() {
val switcher = OneTimeSwitcher()
println(switcher.switch()) // true - переключение произошло
println(switcher.switch()) // false - переключение уже было
}
В этом примере метод switch() возвращает true только при первом вызове, что означает успешное переключение. Все последующие вызовы вернут false, предотвращая повторное переключение.