Android 同时插入dao和greendao;执行BEGIN EXCLUSIVE时数据库被锁定

Android 同时插入dao和greendao;执行BEGIN EXCLUSIVE时数据库被锁定,android,greendao,Android,Greendao,当同一进程中有两个不同的线程试图同时持久化时,我们正在测试greendao的并发性问题 我们在同一进程中产生两个线程,并让它们同时插入100个随机填充的dao 绿道1.3.0版 如果我们做错了什么,或者您需要更多信息,请告诉我,谢谢 我们不断发现这个错误: 04-04 14:29:48.528: E/Database(17736): Failure 5 (database is locked) on 0x2d4c98 when executing 'BEGIN EXCLUSIVE;' 04-0

当同一进程中有两个不同的线程试图同时持久化时,我们正在测试greendao的并发性问题

我们在同一进程中产生两个线程,并让它们同时插入100个随机填充的dao

绿道1.3.0版

如果我们做错了什么,或者您需要更多信息,请告诉我,谢谢


我们不断发现这个错误:

04-04 14:29:48.528: E/Database(17736): Failure 5 (database is locked) on 0x2d4c98 when executing 'BEGIN EXCLUSIVE;'
04-04 14:29:48.528: W/dalvikvm(17736): threadid=10: thread exiting with uncaught exception (group=0x40018560)
04-04 14:29:48.538: E/AndroidRuntime(17736): FATAL EXCEPTION: Thread-11
04-04 14:29:48.538: E/AndroidRuntime(17736): android.database.sqlite.SQLiteException: database is locked: BEGIN EXCLUSIVE;
04-04 14:29:48.538: E/AndroidRuntime(17736):    at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
04-04 14:29:48.538: E/AndroidRuntime(17736):    at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1772)
04-04 14:29:48.538: E/AndroidRuntime(17736):    at android.database.sqlite.SQLiteDatabase.beginTransactionWithListener(SQLiteDatabase.java:536)
04-04 14:29:48.538: E/AndroidRuntime(17736):    at android.database.sqlite.SQLiteDatabase.beginTransaction(SQLiteDatabase.java:490)
04-04 14:29:48.538: E/AndroidRuntime(17736):    at de.greenrobot.dao.AbstractDao.executeInsert(AbstractDao.java:344)
04-04 14:29:48.538: E/AndroidRuntime(17736):    at de.greenrobot.dao.AbstractDao.insert(AbstractDao.java:293)

下面是我用来插入dao的代码:

getGreenDaoSession().getMyDao().insert(this.myDao);

终于弄明白了

每个线程都在生成一个单独的
DaoSession
。由于每个线程处于相同的进程中,因此需要使用相同的
DaoSession

不过,这确实让我担心,我想知道当我们尝试进行相同的测试,但线程位于不同的进程上时,这将如何工作