什么是乐观锁、什么是悲观锁,两种锁在Java中的具体应用场景有哪些 |
您所在的位置:网站首页 › 蜜汁乐观是什么意思 › 什么是乐观锁、什么是悲观锁,两种锁在Java中的具体应用场景有哪些 |
微信搜索《Java鱼仔》,每天一个知识点不错过 (一)每天一个知识点什么是乐观锁、什么是悲观锁,两种锁在Java中的具体应用场景有哪些? (二)结论乐观锁和悲观锁不是两种具体的锁,而是一种观念。 乐观锁:乐观锁认为对于同一个数据的并发操作,是不会发生修改的。在更新数据的时候,会采用尝试更新,不断重新的方式更新数据。乐观的认为,不加锁的并发操作是没有事情的 悲观锁:悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有修改,也会认为修改。因此对于同一个数据的并发操作,悲观锁采取加锁的形式。 乐观锁的应用场景:CAS操作是一种典型的乐观锁,使用CAS操作可以在没有锁的情况下完成多线程对一个值的更新。 悲观锁的应用场景:对于写入操作比较频繁的场景,就需要用到悲观锁,java中的synchronized锁就是一种悲观锁,synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块。 (三)再多学一点CAS:compare and swap,比较且交换。使用CAS操作可以在没有锁的情况下完成多线程对一个值的更新。CAS的具体操作如下: 当要更新一个值时,先获取当前值E,计算更新后的结果值V(先不更新),当要去更新这个值时,比较此时这个值是否还是等于E,如果相等,则将E更新为V,如果不相等,则重新进行上面的操作。 以i++操作为例,在没有锁的情况下,这个操作是线程不安全的,假设i的初始值为0,CAS操作先获取原值E=0,计算更新后的值V=1,要更新之前先比较这个值是否还是等于0,如果等于0则将E更新为1,如果不等于0则说明有线程已经更新了,重新获取E值=1,继续执行。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |