ise*_*sep 5 sqlite multithreading android locking synchronized
我的应用程序在SQLiteDatabase中管理其所有数据,该数据由许多线程访问.
现在我一直在数据库本身保持所有数据库调用同步.
我想这样做的原因是偶尔我想通过从服务器获取最新版本并从stratch重建表来刷新表.为了节省时间,我实际上正在制作第二个表,然后在我完成时替换原始文件(在我执行此操作时将其锁定为同步).
问题是我偶尔会让我的SQL调用拖延很长时间(由于同步锁定)或者当SQL调用试图在我的一个表被复制的短暂时间内自行运行时出现错误.
有没有我可以在刷新时将数据库从其他操作中锁定,但让操作A,B,C等同时运行?
干杯!
我很确定你想要的是ReadWriteLock。基本上,它在数据库上放置两种不同的锁,一种用于读取,一种用于写入。当写锁被锁定时,其他人都无法读取或写入。如果任何读锁被锁定(由任意数量的线程),则写锁将无法锁定,直到每个人都完成读取。
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |