java为什么要用锁,【java为什么要对对象加锁?】-看准网

f78e8586d5accb4d83aef815a6f6403e.png

匿名用户

首先。手机码一发,不对之处还请指正。首先来说,锁,理解下,锁是什么?生活中的锁就是为了保护 锁住 可能存在风险和东西。如毛爷爷,为什么锁在银行?不自己天天背着。哦,好像跑题了,反正总之,加锁是为了安全,我有钥匙,我就有所有权,你没有,你就看着别动。那么java为什么搞个锁?当然也是为了安全,比如一间屋子,每个人只能进去十分钟,做自己想做的事情,大家一条队伍(单线程)的时候,一定照顺序来了。但是现在有十条队伍(多线程),首先来说,你无法保证十条队伍中哪个队伍最先进去,也无法保证进去的数量,a进去,修改了屋子里的账本,恰好b也进去了,也修改屋子里的账本,那么账本在他们退出的时候,被修改的结果是有风险(处理结果有错误的)的。因为根据JMM(抓蛙内存模型)和happes-before关系,无法保证多线程处理后的结果。为了保证账本这个敏感的账本的安全,那么我就要让无论来自哪个队伍的人都要有顺序的进行。于是出现了锁,于是乎现在屋子大门是开的,a进去了,门会自动关上加锁,那么,就等于说,这个屋子有人进来了,等这个人出去了,你们才能进来。然后其他队伍只能等待,只有等a出来了,其他队伍才能有机会进去,虽然现在进去的顺序无法保证,但是却能保证每次只有一个队伍修改账本,而且修改后,其他队伍再进去,这样就变得有顺序,安全了起来。嗯,账本其实就是对象的属性。队伍其实就是线程。

2018-12-29 07:05

评论

6

0/140

发布

匿名

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值