synchronized(this)的问题

synchronized(this)的问题

synchronized(this){.....}  这里的this有什么情况下可以换成其他对象?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,在HotSpot JVM实现中,锁有个专门的名字:对象监视器。

    线程同步可以这样理解,我们在超市中存包时,当一个柜子中存入东西时,就会把这儿柜门锁上,给出小纸条作为钥匙,此时其他人去开这个柜门,就不能打开,而当我们买完东西,使用小纸条打开柜门,取出东西后,这个柜子的锁就释放了!那这时别人再来打开这个柜子,就可以打开了!

synchronized(任意自定义对象),这个括号里的对象,就相当于这个小纸条。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 慕圣4451946 提问者 #1
    意思是线程内调用与括号内相同的对象就可以执行语句块相同的对象吗?
    2019-10-27 14:31:44
  • 慕圣4451946 提问者 #2
    意思是线程内调用与括号内相同的对象就可以执行语句块内的内容吗?
    2019-10-27 14:33:42
  • 好帮手慕小尤 回复 提问者 慕圣4451946 #3
    同学你好,意思是,执行语句块中的代码时,我们传入了任意一个对象即可,直到括号内的代码执行完时,我们传入的对象才会被释放。所以,传入任意一个对象就可以。这样,即使有多个线程同时操作这同一个对象,在代码块儿中的代码也不会同时运行了。祝学习愉快!
    2019-10-27 15:11:00
提问者 慕圣4451946 2019-10-27 11:18:41

不太懂,对象监视器必须是同一个对象是什么意思?可以举例说明一下吗?

好帮手慕小尤 2019-10-27 11:08:15

同学你好,当使用synchronized(任意自定义对象)进行同步操作时,对象监视器必须是同一个对象。只要对象监视是一个,就可以换成其他对象。所以,这里是可以换成其他任意自定义对象的。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师