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

Android 我可以为当前线程锁定SQLite表吗?,android,multithreading,sqlite,locking,synchronized,Android,Multithreading,Sqlite,Locking,Synchronized,我的应用程序在由多个线程访问的SQLiteDatabase中管理其所有数据 现在,我一直在数据库本身上保持所有数据库调用的同步 我想这样做的原因是,有时我想通过从服务器获取最新版本并从stratch重建表来刷新表。为了节省时间,我实际上制作了第二个表,然后在完成后替换原来的表(在执行此操作时,使用同步的锁将其锁定) 问题是我偶尔会让我的SQL调用暂停很长一段时间(由于同步锁),或者当SQL调用在复制我的一个表的短时间内尝试自行运行时,我会出错 是否有一个was让我在数据库刷新时锁定其他操作,但让

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

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

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

问题是我偶尔会让我的SQL调用暂停很长一段时间(由于同步锁),或者当SQL调用在复制我的一个表的短时间内尝试自行运行时,我会出错

是否有一个was让我在数据库刷新时锁定其他操作,但让操作a、B、C等同时运行


干杯

我很确定你想要的是一份工作。基本上,它会在数据库上设置两个不同的锁,一个用于读取,一个用于写入。当写锁被锁定时,其他人无法读取或写入。如果任何一个读锁被锁定(由任意数量的线程锁定),则在所有人都完成读取之前,写锁将无法锁定。

是的!这正是我想要的!这比我所做的同步要好得多。谢谢!:)@isep您好,我在Black Berry开发中遇到了麻烦,我需要使用多个线程来访问数据库打开和关闭、插入、更新、删除,所以您可以提供一些解决方案或BB中的任何好例子,现在,我的工作是跟踪数据库的打开和关闭计数,但有时会给我数据库例程带来顺序错误。