您的位置:首页 > 编程语言 > Java开发

java ReentrantReadWriteLock

2016-10-11 10:54 337 查看
ReentrantReadWriteLock是java读写锁的实现。

读写锁的作用,当发现程序大部分时间是进行读操作,而只有个别时间需要进行写操作。

这时候使用读写锁在保证多线程安全基础上,对性能是有帮助提升的。

读锁可以重入,多线程不发生互斥,可以同时进行读取操作。

写锁,能保证当前只有一个线程获取到写锁,此时读锁和写锁的获取的线程都会被阻塞,(同样能够获得写锁也意味着当前没有读锁和写锁被其他线程获取到。)

而如果在这种场景下使用普通锁,即正常的读写互斥,那么这会导致,大多数的读场景,均是线程间串行执行代码,这样可想而之,性能会下降。

一般使用方式:

ReadWriteLock lock = new ReentrantReadWriteLock(); 

lock.readLock().lock();

try {

} finally {

lock.readLock().unlock();

}

注:如果本身的临界区的耗时极短(如微妙),那么将synchronized更改为读写锁,其实不会太多的性能帮助,因此1ms内能顺序处理足够多的线程了,不会成为瓶颈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: