Что такое безопасность в потоках

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

Ответ

Безопасность в потоках (thread safety) означает, что код корректно работает в многопоточной среде, предотвращая race conditions, deadlocks и другие проблемы.

Основные подходы:

  1. Синхронизация – использование synchronized, Lock или атомарных операций.
  2. Иммутабельность – неизменяемые объекты безопасны по умолчанию.
  3. Потокобезопасные коллекцииConcurrentHashMap, CopyOnWriteArrayList.

Пример с synchronized:

class Counter {
    private var count = 0

    @Synchronized
    fun increment() {
        count++
    }
}

Важно избегать избыточной синхронизации – она снижает производительность. Для фоновых операций используйте корутины с Dispatchers.Default или Dispatchers.IO.