java并发-ReadWriteLock代码理解

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

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

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

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

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

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

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章