java ReentrantReadWriteLock

来源:互联网 发布:力学分析软件 编辑:程序博客网 时间:2024/06/07 06:32

ReentrantReadWriteLock是java读写锁的实现。

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

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

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

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


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


一般使用方式:

ReadWriteLock lock = new ReentrantReadWriteLock(); 

lock.readLock().lock();

try {

} finally {

lock.readLock().unlock();

}


注:如果本身的临界区的耗时极短(如微妙),那么将synchronized更改为读写锁,其实不会太多的性能帮助,因此1ms内能顺序处理足够多的线程了,不会成为瓶颈


0 0
原创粉丝点击