java ReentrantReadWriteLock
2016-10-11 10:54
337 查看
ReentrantReadWriteLock是java读写锁的实现。
读写锁的作用,当发现程序大部分时间是进行读操作,而只有个别时间需要进行写操作。
这时候使用读写锁在保证多线程安全基础上,对性能是有帮助提升的。
读锁可以重入,多线程不发生互斥,可以同时进行读取操作。
写锁,能保证当前只有一个线程获取到写锁,此时读锁和写锁的获取的线程都会被阻塞,(同样能够获得写锁也意味着当前没有读锁和写锁被其他线程获取到。)
而如果在这种场景下使用普通锁,即正常的读写互斥,那么这会导致,大多数的读场景,均是线程间串行执行代码,这样可想而之,性能会下降。
一般使用方式:
ReadWriteLock lock = new ReentrantReadWriteLock();
lock.readLock().lock();
try {
} finally {
lock.readLock().unlock();
}
注:如果本身的临界区的耗时极短(如微妙),那么将synchronized更改为读写锁,其实不会太多的性能帮助,因此1ms内能顺序处理足够多的线程了,不会成为瓶颈
读写锁的作用,当发现程序大部分时间是进行读操作,而只有个别时间需要进行写操作。
这时候使用读写锁在保证多线程安全基础上,对性能是有帮助提升的。
读锁可以重入,多线程不发生互斥,可以同时进行读取操作。
写锁,能保证当前只有一个线程获取到写锁,此时读锁和写锁的获取的线程都会被阻塞,(同样能够获得写锁也意味着当前没有读锁和写锁被其他线程获取到。)
而如果在这种场景下使用普通锁,即正常的读写互斥,那么这会导致,大多数的读场景,均是线程间串行执行代码,这样可想而之,性能会下降。
一般使用方式:
ReadWriteLock lock = new ReentrantReadWriteLock();
lock.readLock().lock();
try {
} finally {
lock.readLock().unlock();
}
注:如果本身的临界区的耗时极短(如微妙),那么将synchronized更改为读写锁,其实不会太多的性能帮助,因此1ms内能顺序处理足够多的线程了,不会成为瓶颈
相关文章推荐
- 聊聊高并发(二十八)解析java.util.concurrent各个组件(十) 理解ReentrantReadWriteLock可重入读-写锁
- Technique Java. ReentrantReadWriteLock
- 13、java锁之读写锁ReentrantReadWriteLock.ReadLock与ReentrantReadWriteLock.WriteLock
- java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.ReentrantReadWriteLock
- Java多线程(十)之ReentrantReadWriteLock深入分析
- java ReentrantReadWriteLock 之初步(一)
- java多线程学习笔记——读写锁(ReentrantReadWriteLock)
- 深入浅出 Java Concurrency (14): 锁机制 part 9 读写锁 (ReentrantReadWriteLock) (2)
- 【Java并发编程实战】—–“J.U.C”:ReentrantReadWriteLock
- 《深入浅出 Java Concurrency》—锁机制(九) 读写锁 (ReentrantReadWriteLock) (2)
- java 共享锁和ReentrantReadWriteLock
- java 多线程 ReentrantReadWriteLock 使用
- Java-ReentrantReadWriteLock的简单例子
- 【Java并发编程实战】-----“J.U.C”:ReentrantReadWriteLock
- Java多线程(十)之ReentrantReadWriteLock深入分析
- 聊聊高并发(二十九)解析java.util.concurrent各个组件(十一) 再看看ReentrantReadWriteLock可重入读-写锁
- java 读写锁 , 官方自带示例读解,ReentrantReadWriteLock
- Java中的显示锁 ReentrantLock 和 ReentrantReadWriteLock
- Java:多线程,线程同步,同步锁(Lock)的使用(ReentrantLock、ReentrantReadWriteLock)
- java 读写锁 , 官方自带示例读解,ReentrantReadWriteLock