Существуют ли передовые практики безопасности потоков greenDAO?

Я иду сgreenDAO и пока все идет хорошо. Одна вещь, которая, кажется, не покрыта документами или веб-сайтом (или где-либо еще :(), это то, как это обращается с безопасностью потока.

Я знаю основы, упомянутые в другом месте, такие как «использовать один сеанс дао» (общая практика для Android + SQLite), и я достаточно хорошо понимаю модель памяти Java. Внутренние компоненты библиотеки даже выглядят поточно-безопасными или, по крайней мере, созданы с таким намерением Но ничто, что я видел, не покрывает это:

greenDAO кэширует объекты по умолчанию. Это отлично подходит для полностью однопоточной программы - прозрачно и значительно повышает производительность в большинстве случаев. Но если я, например,loadAll() а затем изменить один из элементов, я изменяю тот же объектглобально через мое приложение. Если я использую его в главном потоке (например, для отображения) и обновляю БД в фоновом потоке (как правильно и правильно), существуют очевидные проблемы с многопоточностью, если не предпринять дополнительных действий.

Делает ли greenDAO что-либо "под капотом", чтобы защитить от распространенных проблем на уровне приложений? Например, изменение кэшированного объекта в потоке пользовательского интерфейса при сохранении его в фоновом потоке (лучше надеяться, что они не чередуются! Особенно при изменении списка!)? Существуют ли «лучшие практики» для защиты от них, помимо общих проблем безопасности потоков (то есть того, что GreenDAO ожидает и хорошо работает)? Или весь кеш фатален с точки зрения безопасности многопоточных приложений?

Ответы на вопрос(2)

Ваш ответ на вопрос