2つのスレッドが同時にデータベースにアクセスする必要があるアプリを作成しています。理想的な方法として、データベースの処理にシングルトンクラスを使用しています。しかし、私は多くの場所で、シングルトンクラスでも、2つのスレッドが同時に書き込もうとすると、そのうちの1つが失敗することを読みました。この問題をどのように解決する必要がありますか、それともこの問題に対するより良いアプローチがありますか?
質問する
95 次
1 に答える
0
SQLiteはあなたのためにそれを行い、他のスレッドは現在のスレッドが挿入/更新されるのを待ち、isDbLockedByCurrentThread()
DBがロックされているかどうかを知る方法があります。それでも、他のデッドロックや競合状態を確実に回避するために、同期ロックを使用することをお勧めします。すべての更新/挿入メソッドを1か所で定義する特別なゲートウェイクラスを作成し、それらのメソッドを作成しますsynchronized
。
于 2012-11-28T12:52:54.577 に答える