synchronized 可以认为默任为当前对像加了一把ReentrantLock锁,
所以,会出现一个线程读另一个线程不能进入的现像 。
这样就造成不论读写,只要线程进入synchronized代码就互斥。
ReentrantReadWriteLock 其实是加了两把锁。
写锁排斥读、写 ,
读锁只排斥 写,所以能达到并发读的效果。
克服了synchronized 读互斥的缺点
所以说 ReentrantReadWriteLock 比synchronized 快
ReentrantReadWriteLock被大量使用在缓存中,因为缓存中的对象总是被共享大量读操作,偶尔修改这个对象中的子对象,比如状态,那么只要通过ReentrantReadWriteLock来更新子对象就可以了
2011-02-23 david.wang