synchronized的问题

synchronized的问题

synchronized(){}语句块时候,里面除了用this外还可以用什么,this和语句块里面的内容有什么关系么

正在回答 回答被采纳积分+1

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

1回答
好帮手慕阿满 2018-11-12 16:57:23

同学你好,synchronized()小括号里是要被锁定的对象,要锁定哪个对象,就将那个对象写在括号中。synchronized(this)是指锁定当前对象,代码块中是同步的代码,和this没有关系。

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

  • 提问者 暖阳洋 #1
    老师,我看上面老师讲的课,觉得synchronized锁定的不是对象,锁定不是代码块中的内容么,实现的功能就是这段代码会一次性执行完毕,然道不是这样么,感觉这个关键字还是不是很理解
    2018-11-12 17:01:28
  • 好帮手慕阿满 回复 提问者 暖阳洋 #2
    锁定的是对象,大括号中是要同步的内容。比如在这道例题中,在存款时给saveAccount()方法加了synchronize,则存款时不允许其他线程打断存款的方法。在取款时,使用synchronize(this){}语句块,锁定了Bank类对象,当取款不允许其他线程打断。祝:学习愉快!
    2018-11-12 17:31:16
  • 提问者 暖阳洋 回复 好帮手慕阿满 #3
    老师,synchronized锁定对象后,不允许其他线程打断,这个说法是错误的,如果您将取款方法不用synchronized锁定,他还是会打断存款的线程,致使结果错误,其实synchronized锁定的判断只是针对同样的synchronized锁定的方法适用,我感觉这个课没有讲到这点。
    2018-11-13 00:07:01
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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