Java多线程读写锁分析

如果 获取 读锁的时候 有写锁 是直接获取不了
还是说 等写锁释放了 继续去获取读锁.

类似 线程里面的wait ?

哪里有源码说明吗,

读写锁:ReentrantReadWriteLock
如果有很多线程从一个数据结构中读取数据,而很少的线程修改数据,那么就用读写锁。
分别得到读锁和写锁:
ReentrantReadWriteLock rrwl=new ReentrantReadWriteLock();
ReadLock readL = rrwl.readLock();
WriteLock writeL = rrwl.writeLock();
读锁与读锁不互斥,读锁与写锁互斥,写锁与写锁互斥。
用于优化性能,提高读写速度。

去找几个多线程读写锁就可以很清楚明白了

有独占锁 ,也有读 共享锁,不同的应用的场景,机制不一样

各位还是没正面回答我的问题呀

写锁释放了 继续去获取读锁
在两个释放锁的方法(unlockRead,unlockWrite)中,都调用了notifyAll方法,而不是notify。
如果用的是notifyAll方法,所有的线程都会被唤醒,然后判断能否获得其请求的锁。
用notifyAll还有一个好处。如果有多个读线程在等待读锁且没有线程在等待写锁时,调用unlockWrite()后,所有等待读锁的线程都能立马成功获取读锁 —— 而不是一次只允许一个

这篇文章讲的非常清晰 你可以去看看http://ifeve.com/read-write-locks/