再谈synchronized

再谈synchronized

 

a.    synchronized作用于方法,二种作用域情况:

 

1)  synchronized 作用于类的对象实例的方法

一个对象中有多个synchronized方法时,当线程1已经访问了这个对象中的任何一个synchronized的方法,线程2不能访问这个对象的任何一个synchronized方法了。但是如果线程2访问的是这个类的另外一个对象中的synchronized方法的话是没有关系的。

2)  synchronized 作用于类的方法

synchronized static aStaticMethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。

 

b.    synchronized 作用于代码块

      synchronized(this){/*区块1*/}//它的作用域是当前对象;代码块在方法内,虽然这个方法不是synchronized,但是当线程1在访问这个块的时候,线程2就不能再访问这个对象中的其他的任何的synchronized方法和synchronized(this){/*区块1*/}的代码块。

       Object ob1=”resource1”;

       Object ob2=”resource2” ;

      

       synchronized(ob1){/*区块2*/}//作用域为ob1,可以理解为 区块2被称ob1lock锁住了。

       synchronized(ob2){/*区块3*/}//作用域为ob2,可以理解为 区块3被称ob2lock锁住了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值