Использовал ли synchronized

«Использовал ли synchronized» — вопрос из категории Многопоточность, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

synchronized — это ключевое слово в Java/Kotlin для управления доступом к общему ресурсу в многопоточной среде.

Пример:

class Counter {
    private var count = 0

    @Synchronized // Аннотация для метода (Kotlin)
    fun increment() {
        count++
    }

    // Или через synchronized-блок (Java/Kotlin)
    fun decrement() {
        synchronized(this) {
            count--
        }
    }
}

Нюансы:

  1. Работает только в пределах одного процесса (не подходит для межпроцессного взаимодействия).
  2. Может привести к блокировкам (deadlocks), если неправильно спроектирован.
  3. В Kotlin предпочтительнее использовать Mutex из корутин или другие высокоуровневые механизмы.

Альтернативы: ReentrantLock, Atomic-классы, корутины с Mutex.