mr_l1u 2021-02-24 02:37 采纳率: 66.7%
浏览 41
已结题

在线程run方法里使用使用同步块的意义是什么?

run方法难道还存在竞争的可能吗?不是一个线程一个run方法吗?很迷惑。

  • 写回答

3条回答 默认 最新

  • Ratil_lite 2021-02-24 05:33
    关注

    防止多个线程并发执行的时候,customerServed这个变量累加的结果不对。synchronized(this) 相当于给整个对象加锁,因此每个线程执行到这里的时候都会等待上一个线程释放锁。如果不加 synchronized(this) ,你会发现如果有50个线程执行,最终 customerServed 的结果并不是加了50,而一定会比50少。

    加了synchronized

    没加锁

    如图,没加锁就会出现两个线程同时执行,出现相同结果,从而达不到50的结果

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    mr_l1u 2021-02-24 06:09

    明白了,thx。

    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部