Gibt es Best Practices für die Sicherheit von greenDAO-Threads?

Ich gehe mitgreenDAO und bis jetzt läuft es ziemlich gut. Eine Sache, die in den Dokumenten oder auf der Website (oder anderswo :() nicht behandelt wird, ist der Umgang mit der Threadsicherheit.

Ich kenne die an anderer Stelle genannten Grundlagen wie "Verwenden einer einzelnen Dao-Sitzung" (allgemeine Vorgehensweise für Android + SQLite) und verstehe das Java-Speichermodell recht gut. Die Interna der Bibliothek scheinen sogar threadsicher oder zumindest in dieser Absicht aufgebaut zu sein. Aber nichts, was ich gesehen habe, deckt dies ab:

greenDAO speichert Objekte standardmäßig im Cache. Dies ist hervorragend für ein vollständig Single-Thread-Programm geeignet - transparent und für die meisten Anwendungen ein massiver Leistungsschub. Aber wenn ich z.loadAll() und dann ändern Sie eines der Elemente, ich ändere das gleiche Objektglobal über meine App. Wenn ich es im Hauptthread verwende (z. B. zur Anzeige) und die Datenbank in einem Hintergrundthread aktualisiere (wie es richtig und richtig ist), gibt es offensichtliche Threading-Probleme, sofern nicht besondere Sorgfalt angewendet wird.

Tut greenDAO irgendetwas "unter der Haube", um vor allgemeinen Threading-Problemen auf Anwendungsebene zu schützen? Ändern Sie beispielsweise eine zwischengespeicherte Entität im UI-Thread, während Sie sie in einem Hintergrund-Thread speichern (hoffen Sie besser, dass sie nicht verschachtelt werden! Insbesondere, wenn Sie eine Liste ändern!)? Gibt es "Best Practices" zum Schutz vor solchen Bedrohungen, die über die allgemeinen Sicherheitsbedenken für Threads hinausgehen (d. H. Etwas, das greenDAO erwartet und mit dem es gut funktioniert)? Oder ist der gesamte Cache in Bezug auf die Sicherheit von Multithread-Anwendungen fatal fehlerhaft?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage