Android 使用greendao的SQLite事务行为
我在Android项目中使用greendao作为ORM库,在理解事务行为时遇到问题 greendao提供了一个APIAndroid 使用greendao的SQLite事务行为,android,multithreading,sqlite,transactions,greendao,Android,Multithreading,Sqlite,Transactions,Greendao,我在Android项目中使用greendao作为ORM库,在理解事务行为时遇到问题 greendao提供了一个APIrunInTx(Runnable r)。 我的问题是,如何处理来自不同线程的此方法的两个调用 线程1 public void thread1() { DaoManager.INSTANCE.getDaoSession().runInTx(new Runnable() { doQueries(); doInsertsAndUpdates
runInTx(Runnable r)
。
我的问题是,如何处理来自不同线程的此方法的两个调用
线程1
public void thread1() {
DaoManager.INSTANCE.getDaoSession().runInTx(new Runnable()
{
doQueries();
doInsertsAndUpdates();
}
}
线程2
public void thread2() {
DaoManager.INSTANCE.getDaoSession().runInTx(new Runnable()
{
doQueries();
doInsertsAndUpdates();
}
}
我已经看到,runInTx
正在以独占模式调用SQLiteDatabase.beginTransaction
,因此当此事务打开时,没有其他线程可以读/写数据库。
但我无法弄清楚的是,当thread1正在执行他的工作时(即doQueries
),另一个线程(即thread2)是否会被阻止,因此直到thread1完成事务后,thread2的doQueries
和doInsertsAndUpdates
感谢您的帮助。
SQLiteDatabase.beginTransaction
是一个阻塞调用