Я пытаюсь понять возможные способы работы с SQLite, когда на БД может работать несколько потоков.Основываясь на различных ответах в stackoverflow и других сайтах, кажется, что будет проблема блокировки, когда один и тот же экземпляр sqlitehelper используется из нескольких потоков.В типичном java-приложении я бы ожидал, что экземпляр будет означать, что один объект типа sqlite helper будет использоваться разными потоками приложения. В таких случаях, я думаю, блокировки - это вопрос правильного использования синхронизированных блоков.[Поправьте меня здесь, так как мне неудобно смотреть на экземпляр sqliethelper здесь]
Меня интересует совместное использование одной и той же базы данных: когда один экземпляр помощника sqlite в разных потоках [т.е. каждый поток имеет свой собственный объектэкземпляр], но работающий с той же базой данных [это, я думаю, более встраиваемо в тот же экземпляр БД].В таких случаях я получаю частые ошибки блокировки базы данных.Это происходит, даже когда потоки работают с разными таблицами базы данных.
В моем приложении база данных может быть обновлена путем взаимодействия с пользователем через приложение или путем получения данных через сервер [периодическая синхронизация].И иногда, когда процесс синхронизации и пользовательская активность перекрываются, у меня возникают проблемы с блокировкой.Поскольку этот шаблон обработки данных, по-видимому, распространен при синхронизации приложений с сервером, хотелось бы знать, как решить проблему блокировки из-за параллелизма.
Я хотел бы понять это, поскольку, если это связано сслучается всегда, тогда, вероятно, нужно сделать только один обработчик над базой данных и реализовать очередь поверх этого, чтобы избежать блокировки.Но это будет означать, что полное приложение должно знать, что база данных может обновляться не сразу, и им нужно внедрить слушатель, чтобы знать, когда данные действительно обновляются в базе данных.
спасибо pradeep