在SQLite中,可以有任意多个读取器,但是任何写入器都会阻止所有其他读取器和写入器。
读者和作家都必须使用一个锁。
请注意,只要您实际访问数据库,就必须保持锁定。
如果要支持多个阅读器,请使用实现的锁
ReadWriteLock,例如
ReentrantReadWriteLock。像这样:
class MyData { private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); private final Lock r = rwl.readLock(); private final Lock w = rwl.writeLock(); public Data ReadSomething(int id) { r.lock(); try { Cursor c = readableDatabase.query(...); return c.getString(0); } finally { r.unlock(); } } public void ChangeSomething(int id, int value) { w.lock(); try { writeableDatabase.update(...); } finally { w.unlock(); } }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)