статье написан пример создания singleton инстанса с использованием synchronized.
Насколько безопасно использовать такой способ? Не получу ли я в рантайме SQLiteDatabaseLockedException?
Если я правильно понимаю, то этот эксепшн вылетает при транзакции, когда БД залочена кем-то другим. С чего бы ему из-за синхронизации выскакивать?
Рум изначально потокобезопасен же
Так в пределах одного инстанса, а при инициализации инстанса в синглтоне нужна синхронизация. Там же, наверное, написано что-то типа: if (instance == null) { instance = Room.databaseBuilder(...).build() } Вот тут без синхронизации можно получить гонку потоков
Ну да, стандартая реализация синглтона. Читал на медиуме, что в корутинах synchronized табу
Обсуждают сегодня