Android SQLite:Lock+;多线程访问

Android SQLite:Lock+;多线程访问,android,sqlite,concurrency,locking,Android,Sqlite,Concurrency,Locking,我试图理解在DB上可以有多个线程的情况下使用SQLite的可能方法。 根据stackoverflow和其他站点中的各种响应,当从多个线程使用同一个sqlitehelper实例时,似乎会出现锁定问题。在一个典型的java应用程序中,我希望instance是指由应用程序的不同线程使用的sqlite helper类型的单个对象。[在这里纠正我的错误,因为我不习惯用这种方式查看sqliethelper实例] 我关心的是共享同一个数据库:当一个线程在不同的线程中实例化sqlite帮助程序[即每个线程都有自

我试图理解在DB上可以有多个线程的情况下使用SQLite的可能方法。 根据stackoverflow和其他站点中的各种响应,当从多个线程使用同一个sqlitehelper实例时,似乎会出现锁定问题。在一个典型的java应用程序中,我希望instance是指由应用程序的不同线程使用的sqlite helper类型的单个对象。[在这里纠正我的错误,因为我不习惯用这种方式查看sqliethelper实例]

我关心的是共享同一个数据库:当一个线程在不同的线程中实例化sqlite帮助程序[即每个线程都有自己的对象实例],但在同一个数据库上工作[我想这与拥有相同的db实例更相关]。 在这种情况下,我经常会遇到数据库锁错误。即使线程在数据库的不同表上工作,也会发生这种情况

在我的应用程序中,可以通过用户通过应用程序交互或通过服务器获取数据来更新数据库[定期同步]。当同步过程和用户活动重叠时,我会遇到锁问题。由于这种数据处理模式在与服务器同步的应用程序中似乎很常见,我想知道如何处理并发性导致的锁问题

我想理解这一点,因为若这种情况总是会发生,那个么可能只需要在数据库上创建一个处理程序,并在数据库上实现队列,以避免锁定。但这意味着整个应用程序需要意识到数据库可能不会立即更新,并且需要实现侦听器来知道数据库中的数据何时实际更新

谢谢
据我所知,sqlite的用途是pradeep。不管发生什么,您总是需要一次从一个线程访问数据库。您可以从多个客户端进行选择,但一次只能从一个客户端进行写入。同时,其他读者和作家将不得不锁定


另一方面,数据库访问几乎不能被认为是瞬时的。

虽然DB访问几乎不能是瞬时的,但其底层内容是隐藏的,这是正确的。这里我将与同步调用不同——在典型的编程中,同步地得到写操作的结果。如果结果成功,可以立即读取相应的数据。但我的问题是,如果锁将发生(即使两个线程在不同的表上工作),并使我在数据库上实现排队行为,那么这与在J2SE项目上进行的典型数据库编程不存在显著差异吗?实际上,你是错的。多个进程可以访问SQLite数据库。我有两个android应用程序从同一个数据库中读取、插入和删除。请阅读我提供的链接。它说:“多个进程可以同时打开同一个数据库。多个进程可以同时进行选择。但是,在任何时候只有一个进程可以对数据库进行更改。”在这一点上,我相信数据库本身的作者。我想知道你是如何测试这些同步读写的?他没有声称它们是同步的:)