Java并发4——八锁现象

Java并发之八锁现象

1.这么说吧,如果两个都是普通方法,那么就看谁先调用,一般先调用先执行

2.如果都是普通方法,但是有加延时,那么就延时少的先调用(因为时间是差不多同时调用,但是一个延时4秒再执行,一个延时2秒再执行,肯定2秒的先执行出来)

3.如果加锁的话,无延时,仍然是谁先调用谁执行

** 4.如果加锁加延时的话,延时不管,谁先调用谁执行,管它延不延时,反正没执行完不出来,这就是锁的作用
锁的是对象,没结束,锁不释放**

(这里先后调用看的是 程序中先调用了哪个方法的线程)

5.两个对象,两把锁,不存在锁的情况,谁延时少谁先执行(跟两个普通方法一样)

6.增加两个静态的同步方法,只有一个对象,先打印 发短信?打电话?

  • 6、两个对象!增加两个静态的同步方法, 先打印 发短信?打电话?
    都是发短信,因为锁的是类,不管是一个对象还是两个对象,反正锁的都是该类,只要锁的对象相同,就会被锁。

7、1个静态的同步方法,1个普通的同步方法 ,一个对象,先打印 发短信?打电话?
先打电话。因为静态锁的是类,普通锁的是对象,不是同个东西。

8、1个静态的同步方法,1个普通的同步方法 ,两个对象,先打印 发短信?打电话?
一样道理,一个锁的是对象,一个锁的是类,不是同个东西,相当于没锁,直接看延时。

总结一下:

  1. 对 方法 锁的话,锁的是对象,那么只有锁的是同一对象才有锁的效果。
  2. 对 静态方法锁的话,锁的是类,不管一个对象还是两个对象,都有锁的效果。
  3. 如果一个锁 静态方法,一个锁方法,那么锁的一个是类,一个是对象,肯定不是同个东西,也就没有锁的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值