前言:
如今咱们对“重入锁实现原理”可能比较珍视,咱们都想要知道一些“重入锁实现原理”的相关内容。那么小编同时在网上搜集了一些关于“重入锁实现原理””的相关资讯,希望看官们能喜欢,你们一起来了解一下吧!什么是可重入锁
当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,我么就将其称为可重入锁。
常见的可重入锁有synchronized 和 ReentrantLock。
可重入锁的原理
每一个锁关联一个线程持有者和计数器,当计数器为 0 时表示该锁没有被任何线程持有,那么任何线程都可能获得该锁而调用相应的方法;当某一线程请求成功后,JVM会记下锁的持有线程,并且将计数器置为 1;此时其它线程请求该锁,则必须等待;而该持有锁的线程如果再次请求这个锁,就可以再次拿到这个锁,同时计数器会递增1;当线程退出同步代码块时,计数器会递减1,如果计数器为 0,则释放该锁。
可重入锁的作用
重入锁的做用之一在于防止死锁,也就是防止因为资源等待而获取不到锁,如果一个线程在自己等待自己拥有的资源释放,那么永远也等不到,陷入死锁,如果自己的资源不用等待,也就可以解决死锁。
#redis# #死锁#
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #重入锁实现原理