synchronized的三种作用方式

一、作用在代码块上

在这里插入图片描述
synchronized作用在代码块上,this表示一定是线程共享的对象,每个对象都有一个对象锁,100个对象有100个锁,线程t1进来找到this的对象锁,并占有,t2则等待
比如: 在这里插入图片描述
this就表示Account对象act,act只有一个,act被t1,t2共享,共享就是只有一个锁,比如synchronized(“abd”),常量池只有一个abd
二、作用在实例方法上

在这里插入图片描述
synchronized出现在实例方法上,锁的是一定是this,不灵活,而且锁的是整个方法,会扩大同步范围

StringBuffer也是在方法上加了synchronized,
总结:局部变量不存在安全问题
三、静态方法使用
表示类锁,一个类只有一把锁,
100个对象也只有一把锁

在这里插入图片描述
以上的锁其实叫 :排他锁

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值