Присвоение value потокобезопасно, но чтение и последующее присвоение не составляют атомарную операцию. update выполняет атомарное преобразование текущего состояния.
В чём разница между присваиванием через .value и использованием .update() у MutableStateFlow?
Присвоение value потокобезопасно, но чтение и последующее присвоение не составляют атомарную операцию. update выполняет атомарное преобразование текущего состояния.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Присвоение value потокобезопасно, но чтение и последующее присвоение не составляют атомарную операцию. update выполняет атомарное преобразование текущего состояния.
Например, state.value = state.value + 1 может потерять конкурентное увеличение, тогда как state.update { it + 1 } защищает read-modify-write. Лямбда update может выполняться повторно при конкуренции, поэтому внутри неё не следует отправлять запросы, письма или записывать необратимые побочные эффекты.
Источник: kotlinlang.org.