java锁的知识点

本文深入探讨了可重入锁(递归锁)的概念,解释了其存在的必要性,即避免死锁的发生,并通过synchronized关键字和ReentrantLock锁进行说明。文章详细介绍了可重入锁的工作原理,包括锁的计数器机制,以及如何通过计数器的增减实现线程的可重入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可重入锁(递归锁)

以synchronized为例:

  1. why?
    如果synchronized是不可重入的, 那么会经常发生死锁. 为了避免死锁的发生, synchronized是可重入的.
  2. what?
    一个类中存在两个synchronized修饰的方法,在 A方法中调用B方法,当B方法执行完返回A方法的时候,无需重新获取锁(this对象), 称为锁具有可重入性. 除了synchronized, 常见的还有ReentrantLock锁.
  3. how?
    每个锁对象关联一个计数器, 当计数器为0的时候, 其他线程可以获取锁对象. 当计数器不为0时, 其他线程阻塞. 持有锁对象的线程, 每获取一次锁对象, 计数器加1, 每退出同步块释放锁对象一次, 计数器减1. 以此来实现可重入.

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值