Synchronized性质(可重入性 和 不可中断)

原文链接https://blog.csdn.net/qq_34288630/article/details/102404004
一、可重入性
1、什么是可重入性
指的是同一线程的外层函数获得锁之后,内层函数可以直接再次获取该锁
不可重入:举例:我在北京汽车摇号
我:线程 摇到号:获得锁
我摇到一次号只能获取一次上牌照的机会。这叫做不可重入性
2、好处
避免死锁、提升封装性
如何避免死锁:假设两个方法都被synchronized修饰,方法1中调用方法2 由于方法2也被synchronized修饰,也需要获得这把锁。假设他是不可重入性,执行方法2 就必须一直等待方法1完成,但是方法1中是调用了方法2,所以会处于一直等待,最后导致死锁。
所以可重入性 就避免了死锁
3、粒度
指的是一个范围,线程而非调用
(用三种情况说明和pthread的区别)
粒度在同一线程范围内
情况一:证明同一个方法是可重入的
情况二:证明可重入不要求是同一个方法
情况三:证明可重入不要求是同一个类中
二、不可中断
1、什么是不可中断
一旦这个锁被别人获得了,如果我还想获得,我只能选择等待或者阻塞,直到别的线程释放这个锁,如果别人永远不释放锁,那么我只能永远等下去
相比之下,Lock类,可以拥有中断的能力,第一点,如果我觉的我等的时间太长了,有权中断现在已经获取到锁的线程的执行,第二点,如果我觉的我等待的时间太长了不想等了,也可以退出

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值