2、因为读写锁,多个线程之间的读写操作才不会发生冲突。
3、readwritelock是读写锁,它是一个界面,rentrantreadwritelock实现了这个界面。
实例
public class cachedemo { private map<string, object> cache = new hashmap<>(); private readwritelock readwritelock = new reentrantreadwritelock(); public static void main(string[] args) { } public object getdata(string key) { object value = null; //首先开启读锁,从缓存中去取 readwritelock.readlock().lock(); try { value = cache.get(key); //如果缓存中没有释放读锁,上写锁 if (value == null) { //对应querydb() readwritelock.readlock().unlock(); //读锁必须unlock之后才能获取写锁 readwritelock.writelock().lock(); try { //对应querydb() value = querydb(); } finally { //释放写锁 readwritelock.writelock().unlock(); } //然后再上读锁 readwritelock.readlock().lock(); } } finally { //最后释放读锁 readwritelock.readlock().unlock(); } return value; } public object querydb() { return aaaa; }}
以上就是java读写锁的概念是什么的详细内容。
