码迷,mamicode.com
首页 > 编程语言 > 详细

多线程——重入锁

时间:2019-01-27 19:29:55      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:同步代码块   成功   状态   重入   strong   实现   可重入   请求   说明   

        当某个线程请求一个由其它线程持有的锁时,该线程就会进入等待或者阻塞状态,一直到持有锁的线程释放锁,然后再去竞争获取锁。然而,内置锁(即Synchronized修饰的锁对象)是可重入的,因此如果某个线程试图获得一个已经由它自己持有的锁,那么它会成功获得此锁,这就是所谓的重入锁,也可以理解为锁的重入

        “重入”,意味着获取锁的操作的粒度是“线程”,而不是“调用”,“调用”只是获取锁的途径。

        “重入”的一种实现方法原理:

        为每一个锁关联一个获取计数器和一个所有者线程。当计数值为0时,表示这个锁被认为没有任何线程持有。当线程请求一个未被持有的锁时,JVM将记下锁的持有者,并且将获取计数器的值置为1。如果同一个线程再次获取这个锁,计数器的值会递增,而当线程退出同步代码块时,计数器的值将会递减。当计数器的值为0时,说明这个锁被释放了。

多线程——重入锁

标签:同步代码块   成功   状态   重入   strong   实现   可重入   请求   说明   

原文地址:https://www.cnblogs.com/SysoCjs/p/10326730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!