java并发-ReadWriteLock代码理解

原创
2019/12/14 16:11
阅读数 41

创建的ReadWriteLock需要使用两个方法来继续创造2个对象,分别是ReadLock和WriteLock。

这两个锁对象的方法调用都会汇聚到ReadWriteLock的Sync类中。多个对象的方法调用汇聚到一个对象上面,这个设计模式是?

1.当线程获得写锁,那么其他线程必须阻塞

2.当线程获得读锁,那么其读线程可以获得读锁,写线程必须阻塞

采用一个同步队列,如何保证让不同类型的线程都停止下来呢?

如果一个线程要获得读锁,那么就先看头结点是否是读锁,如果是,那么可以获得锁。如果不是,那么就阻塞自己。

如果一个线程要获得写锁,那么就先看头结点是否是写锁,如果是,那么就可以获得锁,不过不是,那么就阻塞自己。

当一个线程释放读锁,而没有其他的线程获得读锁,那么就通知同步队列的下一个线程,让其醒来尝试获取锁。如果有其他的线程持有读锁,那么就什么也不做,把自己移除同步队列即可。

当一个线程释放写锁,也是类似的。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部