为什么要有JAVA锁
Posted Coder_Dai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么要有JAVA锁相关的知识,希望对你有一定的参考价值。
考虑一个银行账户数组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锁的主要内容,如果未能解决你的问题,请参考以下文章
redis08_redis的事务 multi(声明一个事务)exec(执行一个事务)redis里面为什么要有事务悲观锁和乐观锁(可以并发提高吞吐量)