Junior — Middle
როგორ შეიძლება შევქმნათ ბლოკირების მექანიზმი, რომელიც პასუხისმგებელია ერთჯერადი მდგომარეობის შეცვლისთვის, პროგრამის კოდის დონეზე?
sobes.tech AI
პასუხი AI-სგან
Для создания механизма блокировки, который позволяет однократное переключение состояний, можно использовать атомарные операции или примитивы синхронизации, например, 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, предотвращая повторное переключение.