Java多线程并发读写锁ReadWriteLock实现原理剖析
本文字数:3107字
预计阅读时间:10分钟
关于读写锁
读写锁的性质
可以多个线程同时持有读锁,某个线程成功获取读锁后其它线程仍然能成功获取读锁,即使该线程不释放读锁。
在某个线程持有读锁的情况下其它线程不能持有写锁,除非持有读锁的线程全部都释放掉读锁。
在某个线程持有写锁的情况下其它线程不能持有写锁或读锁,某个线程成功获取写锁后其它所有尝试获取读锁和写锁的线程都将进入等待状态,只有当该线程释放写锁后才其它线程能够继续往下执行。
如果我们要获取读锁则需要满足两个条件:目前没有线程持有写锁和目前没有线程请求获取写锁。
如果我们要获取写锁则需要满足两个条件:目前没有线程持有写锁和目前没有线程持有读锁。
简单版本的读写锁
读锁升级为写锁
写锁降级为读锁
ReentrantReadWriteLock类图
ReentrantReadWriteLock实现思想
ReadLock与WriteLock
公平/非公平模式
写锁的实现
读锁的实现
一个例子
总结
我整理了一份很全的学习资料,感兴趣的可以微信搜索 「猿天地 」,回复关键字 「学习资料 」获取我整理好了的Spring Cloud,Spring Cloud Alibaba,Sharding-JDBC分库分表,任务调度框架XXL-JOB,MongoDB,爬虫等相关资料。
后台回复 学习资料 领取学习资料
如有收获,点个在看,诚挚感谢
评论