Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从多个线程访问sqlite以进行读取_Android_Multithreading_Sqlite - Fatal编程技术网

Android 从多个线程访问sqlite以进行读取

Android 从多个线程访问sqlite以进行读取,android,multithreading,sqlite,Android,Multithreading,Sqlite,使用来自多个线程的sqlite db也有类似的问题,但没有明确的答案。 考虑下面的场景: class MainActivity extends Activity { DbHelper db; //extends sqliteopenhelper ... void M1() { db.getReadableDatabase(); Cursor c = db.query("...." ... db.close(); } void M1() { db.getR

使用来自多个线程的sqlite db也有类似的问题,但没有明确的答案。 考虑下面的场景:

class MainActivity extends Activity {
DbHelper db; //extends sqliteopenhelper
...
void M1() {
    db.getReadableDatabase();
    Cursor c = db.query("...."
    ...
    db.close();
}

void M1() {
    db.getReadableDatabase();
    Cursor c = db.query("...."
    ...
    db.close();
}
好的,这不是多线程,但问题是

使用sqliteopenhelper实例的同一个实例,即上面提到的db,以不同的方法多次打开和关闭是否会成为问题? 我的设想如下:

myAsync extends AsyncTask
doInBackground(.. {
do something using M1(); //this is a background thread }} onResume()...{ myAsync.execute(); M2(); //this is the main thread ... }
如果您在异步场景中看到了这一点,那么可能是两个方法可以在同一时间访问同一个数据库,或者只进行读取-写入如何?。但是他们使用的是同一个SqliteOpenHelper实例。它会导致碰撞吗?如果会,如何避免

我想进一步了解sqlite数据库和并发性 任何想法都将不胜感激


ya有可能不会发生冲突,但当获得另一个线程时,您的db可能会关闭,您可以使用线程的同步概念ie优先级等,当我们使用Synchronized关键字时,一个线程完成它的任务,然后另一个线程将开始

谢谢您提到同步,有些人说如果我只阅读,没有限制,也没有碰撞。这是真的吗?我还想学习同步,但没有什么有用的东西。你能向我推荐任何链接、博客、资料来源吗?我已经搜索过android开发者了。当然,如果我得到任何详细信息,我肯定会这样做