SQLiteOpenHelper を利用していて、IlligalStateException みたいなものに出くわしたので、スレッドによるアクセスは?データベースのインスタンスは?と、気になり、結局ソースコードを追った。ぐぐって見つけたのは、「SQLiteを使う場合の注意点」で、ここに書いてある事は概ね正しいです。 SQLiteOpenHelper.java にて SQLiteDatabase は、mDatabase というメンバ変数に保持しているので、1クラスにつき、1インスタンスしか扱えません。 データベースに対しては、読み書きを行うでしょうから、getWritableDatabase 関数をコールして、内部で保持しているデータベースのインスタンスを取得する事になります。スレッドで読取り専用であっても、データベースは、DBOpenHelperに対して、ひとつのインスタンスなのでしょうが