温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中ReentrantReadWriteLock类的使用

发布时间:2021-07-13 09:20:10 来源:亿速云 阅读:154 作者:chen 栏目:大数据

这篇文章主要介绍“Java中ReentrantReadWriteLock类的使用”,在日常操作中,相信很多人在Java中ReentrantReadWriteLock类的使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中ReentrantReadWriteLock类的使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

ReentrantReadWriteLock与ReentrantLock的区别:

ReentrantLock:同一时间只能有一个线程执行ReentrantLock.lock()后面的代码,这样虽然可以保证线程安全,但程序的运行效率却比较低。

ReentrantReadWriteLock:有两种锁也就是分别有读和写两种锁,在不需要操作实例变量时,可用读锁,在操作实例变量时,用写锁,这样就可以提升程序的运行效率。

共享锁:读相关的锁就叫共享锁。

排他锁:写相关的锁就叫排他锁。

我们首先看一下共享锁:

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

我们看两个线程是异步执行的,这就是共享锁的好处,多个线程可以同时执行lock()方法后面的代码,提高程序的执行效率。下面我们看一下排他锁:

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

我们看输出是同步执行的。这也是排他锁的特性,如果线程中有操作实例变量的操作,为了保证线程安全可以用排他锁。

共享锁和排他锁也是互斥锁。这句话的意思是说如果线程已经获取到了共享锁,但程序没有执行完,那么此时,其它线程在获取排他锁时,是获取不到的,只能等待共享锁释放后才可获取到。

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

Java中ReentrantReadWriteLock类的使用

到此,关于“Java中ReentrantReadWriteLock类的使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI