Ответ
Доступ к переменной из нескольких потоков без синхронизации может привести к race condition, когда результат зависит от порядка выполнения потоков. Это вызывает неожиданные ошибки, например:
- Потеря данных при одновременной записи.
- Некорректные значения при чтении во время записи.
- Deadlock, если синхронизация реализована неправильно.
Пример:
var counter = 0 // Shared variable
fun increment() {
Thread { counter++ }.start()
Thread { counter++ }.start()
}
// Результат может быть 1 вместо 2!
Решение: Используйте synchronized, Atomic, Mutex или потокобезопасные коллекции.