为了账号安全,请及时绑定邮箱和手机立即绑定

Java 中的synchronized锁代码块的时候需不需要这个类是单例

Java 中的synchronized锁代码块的时候需不需要这个类是单例

holdtom 2019-03-01 10:53:20
当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 那问题来了,如果两个线程访问的是这个对象的不同实例,还会阻塞吗?
查看完整描述

4 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

锁是加在对象实例上的。加在不同对象上的锁是不会相互影响的。两个线程访问两个不同对象,是不会相互阻塞的。

查看完整回答
反对 回复 2019-03-01
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

synchronized的用法有以下三种

  1. 指定对象加锁。类似于synchronized (instance) {}。

  2. 直接作用于实例方法。相当于对当前实例加锁,进入同步方法前要获得当前实例的锁。

  3. 直接作用于静态方法。相当于对当前类加锁,进入同步方法前获得当前类的锁。

对于上面的1、2.必须是同一对象或者同一实例时才会使线程阻塞。

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 708 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号