Какие плюсы и минусы ключевого слова synchronized

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

Ответ

Плюсы:

  • Простота использования для базовой синхронизации потоков
  • Гарантирует атомарность операций в synchronized-блоке/методе
  • Предотвращает race conditions

Минусы:

  • Может привести к deadlock при неправильном использовании
  • Снижает производительность из-за блокировки всего объекта
  • Не поддерживает таймауты или прерывания
class Counter {
    private var count = 0

    @Synchronized
    fun increment() {
        count++
    }

    fun getCount(): Int {
        synchronized(this) {
            return count
        }
    }
}