多个线程同时访问数据库

时间:2013-08-15 02:39:09

标签: android android-sqlite sqliteopenhelper

我正在Android制作下载程序。为了允许跨多个活动共享数据库,我创建了WritableDatabase的单例实例。

下载某些内容的每个线程都需要向数据库写入总共下载了多少数据。由于多个线程将访问此实例,在将值输入数据库时​​是否需要使用synchronized代码块?

2 个答案:

答案 0 :(得分:3)

从多个线程使用SQLiteDatabase是安全的,但默认情况下,每个操作都会阻止其他操作。要启用并发更新,请使用enableWriteAheadLogging。阅读更多http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#enableWriteAheadLogging()

答案 1 :(得分:1)

就像读者/写作者问题,当多个线程从数据库读取时没有问题,但是当他们尝试编写时,必须使用synchronized块来允许线程安全操作。