码迷,mamicode.com
首页 > 编程语言 > 详细

为什么要有JAVA【锁】

时间:2020-11-07 17:49:11      阅读:31      评论:0      收藏:0      [点我收藏+]

标签:mic   http   code   系统   知识   参考   增加   为什么   操作   

考虑一个银行账户数组account[10],

两个银行账户account[0],和account[1]需要同时对一个银行账户account[2]进行转账,转账金额不一致

每个账户初始金额为5000。

两个账户同时执行指令

account[2] += amout;

该指令在操作系统中处理如下:

  (1)   将account[2]从内存中中读取到寄存器中

(2)增加amount

 (3)重新加载到内存中

在实际操作中,假定线程1执行完(1)(2)后被打断,线程2执行(1)(2)(3),线程1 执行(3),线程2所做被线程1 覆盖。具体如下图所示:

技术图片

 

 但是有了锁之后,将转账代码用锁包住,可以保证其他线程无法在同一时间访问该资源,自然也就无法出现上述情况。

参考文献:《java核心技术 卷1 基础知识》

为什么要有JAVA【锁】

标签:mic   http   code   系统   知识   参考   增加   为什么   操作   

原文地址:https://www.cnblogs.com/coder-dai/p/13940824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!