Sobes.tech
Junior — Middle

¿Cómo se puede crear un mecanismo de bloqueo que sea responsable de cambiar de estado una sola vez, a nivel de código de programa?

sobes.tech AI

Respuesta de la IA

Для создания механизма блокировки, который позволяет однократное переключение состояний, можно использовать атомарные операции или примитивы синхронизации, например, 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, предотвращая повторное переключение.