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