java中的悲观锁和乐观锁实现

悲观锁就是认为并发时一定会有冲突发生,采用互斥的策略。比如java中的synchronized。

而乐观锁是假设并发时不会有冲突发生,如果发生冲突,则操作失败,并不断重试。乐观锁的机制就是CAS(Compare and Swap)。

 

大多数的处理器都会实现一个CAS指令。

CAS包含了三个操作数,需要读写的内存位置V,进行比较的值A,和需要写入的新值B。

当且仅当V等于A时,CAS才会通过原子方式用新值B更新V。

它的含义是:我认为V的值应该是A,那么将V的值更新为B,否则不修改并告诉V的实际值是多少。

 

CAS是一项乐观锁技术,它希望可以成功执行更新操作,并且如果有另外一个线程在最近一次检查后更新了该变量。CAS可以检测到这个错误。

    原文作者:java锁
    原文地址: https://www.cnblogs.com/zhangjwcode/p/7145647.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞