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

ise*_*sep 5 sqlite multithreading android locking synchronized

我的应用程序在SQLiteDatabase中管理其所有数据,该数据由许多线程访问.

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

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

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

有没有我可以在刷新时将数据库从其他操作中锁定,但让操作A,B,C等同时运行?

干杯!

Kur*_*aum 0

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