我有单独的数据库帮助程序来访问db。这部分没问题。但是,我怀疑读取和写入/删除的异步线程最终会出现问题。
如果一个线程正在读取,另一个正在删除;我怀疑阅读之前无法读取删除前的值。任何人都可以证实吗?使用单身助手实现这一目标应该是什么?
感谢任何帮助,谢谢
public CategoryDatabaseConnection(Context context) {
mDbOpenHelper = CategoryDatabaseOpenHelper.getInstance(context, null, null, 0);
mOpenCounter = mDbOpenHelper.mOpenCounter;
}
public void open() throws SQLException {
// open database in reading/writing mode
int value = mOpenCounter.incrementAndGet();
if(value == 1 || mDatabase==null) {
// Opening new database
mDatabase = mDbOpenHelper.getWritableDatabase();
}
}
答案 0 :(得分:0)
您必须同步数据库帮助程序,以便一次只能有一个线程访问它。
要实现同步,只需在您的课程之前将keywod同步。
实施例
public static synchronized singletonDBHelper()
{
// your code
}