我正在Android
制作下载程序。为了允许跨多个活动共享数据库,我创建了WritableDatabase
的单例实例。
下载某些内容的每个线程都需要向数据库写入总共下载了多少数据。由于多个线程将访问此实例,在将值输入数据库时是否需要使用synchronized
代码块?
答案 0 :(得分:3)
从多个线程使用SQLiteDatabase
是安全的,但默认情况下,每个操作都会阻止其他操作。要启用并发更新,请使用enableWriteAheadLogging
。阅读更多http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#enableWriteAheadLogging()
答案 1 :(得分:1)
就像读者/写作者问题,当多个线程从数据库读取时没有问题,但是当他们尝试编写时,必须使用synchronized块来允许线程安全操作。