java 读写锁 简单分析及java8改进

我就是我 2022-10-02 00:58 204阅读 0赞

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

读锁优先级高还是写锁优先级高?
AQS是什么?
ReentrantReadWriteLock
LockSupport unpark?park?
好久没更新了,这里讲起来还是相当复杂的,涉及到linux的同步原语,也就是mutex和condition。下面一点点分析。
1、读锁优先级高还是写锁优先级高?
因为读锁会阻碍写锁,读锁不阻碍读锁,考虑如下场景,假设现在一个线程A正持有读锁,线程B想要请求写锁,那么线程B被阻塞,此时又来了线程CDEF…请求读锁,因为读锁不阻塞读锁,则线程CDEF…都会拿到读锁,这样会导致一个写饥饿的问题,如果绝大多数是读场景,那么写会一直被阻塞,活活饿死。这样肯定是不行的。
AQS的解决办法:公平模式下,大家排队。非公平模式下,一旦有线程请求写锁,则后续请求读锁都不通过,保证写优先级。所以,默认情况下,写锁优先级高。这个功能可以在
2、AQS是什么?
AQS就是用来实现上面的功能的一个基础类,当然还有其他很多功能,Doug Lea大神写的,java并发的基石。
3、读写锁
4、

转载于:https://my.oschina.net/wuxiaofei/blog/3010672

发表评论

表情:
评论列表 (有 0 条评论,204人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java

    使用读写锁要兼顾性能和安全性 对于共享数据来说,如果说某个方法在访问它的时候,只是去读取,并不更新数据,那是不是就不需要加锁呢?还是需要的,因为如果一个线程读数据的同时,另外

    相关 Java并发--的实现分析

    读写状态的设计 读写锁同样依赖自定义同步器来实现同步功能,而读写状态就是其同步器的同步状态。回想ReentrantLock中自定义同步器的实现,同步状态表示锁被一个线程重