android - Ist Sqlite-Datenbank-Instanz Thread sicher




2 Answers

[WRONG:] Nein, es ist standardmäßig nicht Thread-sicher. Sie sollten Sperren-bezogene SQLiteHelper-Methoden verwenden, um Thread-Sicherheit bereitzustellen.

[EDIT]: SQLiteDatabase-Klasse bietet standardmäßig einen Sperrmechanismus (siehe Kommentare) und wenn Sie auf Multithread laufen, müssen Sie nichts ändern, um Thread-Sicherheit zu haben.

Suchen Sie nach 'thread' in diesem Dokument: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

Und lesen Sie mehr unter:

Ich habe eine Datenbank mit einigen Tabellen. Ich möchte die Tabellen mit mehreren Threads aktualisieren. Ich werde dieselbe Instanz von SQLiteDatabase in allen Threads verwenden.

Bitte schlagen Sie vor, ob dieser Ansatz korrekt ist. Ist Sqlite-Datenbank threadsafe? Können zwei verschiedene Threads die gleiche Tabelle für verschiedene Werte gleichzeitig aktualisieren.




Sie können steuern, ob developer.android.com/reference/android/database/sqlite/… Datenbank threadsicher ist oder nicht, indem Sie developer.android.com/reference/android/database/sqlite/… .

Steuern Sie, ob die SQLiteDatabase threadsicher ist, indem Sie Sperren um kritische Abschnitte verwenden. Das ist ziemlich teuer. Wenn Sie also wissen, dass Ihre Datenbank nur von einem einzelnen Thread verwendet wird, sollten Sie dies auf false setzen. Der Standardwert ist wahr

Also ich denke das beantwortet deine Frage.

Die Methode setLockingEnabled wird in API-Ebene 16 abgeschrieben




Related

android sqlite locking thread-safety