我可以锁定当前线程的SQLite表吗?

时间:2011-11-01 18:50:05

标签: android multithreading sqlite locking synchronized

我的应用程序在一个由多个线程访问的SQLiteDatabase中管理其所有数据。

现在我一直在数据库本身保持所有数据库调用同步。

我想这样做的原因是偶尔我想通过从服务器获取最新版本并从stratch重建表来刷新表。为了节省时间,我实际上正在制作第二张表,然后在我完成时更换原件(在我执行此操作时将其锁定为同步)。

问题是我偶尔会让我的SQL调用拖延很长时间(由于同步锁定)或者当SQL调用试图在我的一个表被复制的短暂时间内自行运行时出现错误

在我刷新数据库时是否有其他操作锁定,但让操作A,B,C等同时运行?

干杯!

1 个答案:

答案 0 :(得分:0)

我很确定你想要的是ReadWriteLock。基本上,它在您的数据库上放置两个不同的锁,一个用于读取,一个用于写入。写锁定被锁定时,其他任何人都无法读取或写入。如果任何读锁被锁定(通过任意数量的线程),写锁将无法锁定,直到每个人都完成读取。