> Почему в Kotlin нет ключевого слова synchronized как в Java? (Kotlin, Java, Android)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Альфа-банк

Стек: Kotlin, Java, Android

> Пример ответа

В Kotlin отказались от synchronized как от ключевого слова, потому что оно было заменено на более гибкие и идиоматичные механизмы. Вместо него используется функция synchronized() из стандартной библиотеки, которая принимает блок кода в качестве лямбды:

val lock = Any()
synchronized(lock) {
    // критическая секция
}

Это сделано для единообразия: в Kotlin все конструкции, управляющие потоками, являются функциями высшего порядка (например, withLock для ReentrantLock), а не ключевыми словами. Такой подход позволяет:

  • Избежать дублирования синтаксиса (Java имеет и synchronized, и synchronized-блоки).
  • Легко комбинировать с другими корутинами и suspend-функциями.
  • Улучшить читаемость кода за счет явного указания объекта блокировки.

Для Android-разработки это особенно удобно: вы можете использовать synchronized как обычную функцию, а для более тонкого контроля - Mutex из корутин.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью