Ответ
Наиболее опасные последствия отсутствия синхронизации:
- Race conditions - непредсказуемый результат из-за порядка выполнения операций в разных потоках. Например:
var counter = 0
// В нескольких потоках:
counter++ // Может потерять инкременты
- Data corruption - повреждение данных при одновременной записи. Особенно критично для коллекций:
val list = mutableListOf<Int>()
// ConcurrentModificationException при одновременном изменении
-
Deadlocks - взаимная блокировка потоков, ожидающих ресурсы друг друга.
-
Memory consistency errors - чтение устаревших значений из-за кеширования в разных потоках.
-
UI crashes - попытки обновления UI не из главного потока приводят к
CalledFromWrongThreadException.