SQLiteDatabase多线程锁定模式

SQLiteDatabase多线程锁定模式,第1张

SQLiteDatabase多线程锁定模式

在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();        }    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5427055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存