码迷,mamicode.com
首页 > 其他好文 > 详细

独占锁 和 共享锁

时间:2020-04-21 15:27:04      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:读写   style   image   readwrite   countdown   技术   latch   syn   soft   


独占锁:独占锁也叫排他锁,是指该锁一次只能被一个线程所持有。如果线程T对数据A加上排他锁后,则其他线程不能再对A加任何类型的锁。获得排它锁的线程即能读数据又能修改数据。
    ReentrantLocksynchronized 都是独占锁

共享锁:共享锁是指该锁可被多个线程所持有。如果线程T对数据A加上共享锁后,则其他线程只能对A再加共享锁,不能加排它锁。获得共享锁的线程只能读数据,不能修改数据。

            独享锁与共享锁也是通过AQS来实现的,通过实现不同的方法,来实现独享或者共享。

              ReentrantReadWriteLock:读锁是共享锁,写锁是独占锁。读锁的共享可以保证并发读是高效的,读写,写读,写写是互斥的

 

 


ReentrantReadWriteLock源码:

构造器无参数,默认是创建一个非公平锁;

技术图片

 

 

我们看到 ReentrantReadWriteLock 有两把锁:ReadLock 和 WriteLock,见名知意,一个读锁一个写锁, 合称“读写锁”。
再进一步观察可以发现 ReadLock 和 WriteLock 是靠内部类 Sync 实现的锁。
Sync 是 AQS 的一个子类,这种结构在 CountDownLatch 、ReentrantLock 、Semaphore 里面也都存在。
在ReentrantReadWriteLock 里面,读锁和写锁的锁主体都是 Sync ,但读锁和写锁的加锁方式不一样。
读锁是共享锁,写锁是独占锁。读锁的共享锁可保证并发读非常高效,而读写、写读、写写的过程互斥,因为读锁和写锁是分离的。所以ReentrantReadWriteLock的并发性相比一般的互斥锁有了很大提升。

 

独占锁 和 共享锁

标签:读写   style   image   readwrite   countdown   技术   latch   syn   soft   

原文地址:https://www.cnblogs.com/cb1186512739/p/12744286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!