读写锁设计原理
2023-08-22 18:11:33 1 举报
读写锁设计原理
作者其他创作
大纲/内容
获取写锁成功
否
是否存在读写锁?
如果是公平锁,需要判断是否需要阻塞
如果有写锁,并且持有写锁的线程不是当前线程,获取读锁失败
是
第一个线程是记录在变量中
写锁(独占)源码分析
存在读写锁,写锁=0,说明有读锁或者持有写锁的线程不是当前线程,获取写锁失败
读锁(共享)源码分析
tryAcquire
获取读写状态
tryAcquireShared
获取写锁的个数
获取读锁的数量
如果当前只有一个线程的话,还不需要动用ThreadLocal,直接往firstReaderHoldCount这个成员变量里存重入数,当有第二个线程来的时候,就要动用ThreadLocal变量readHolds了,每个线程拥有自己的副本,用来保存自己的重入数
0 条评论
回复 删除
下一页