cas是乐观锁吗(java乐观锁)

参考AtomicInteger类如下方法publicfinalintincrementAndGet(){for(;;){intcurrent=get();//1intnext=current+1;//2if(compareAndSet(current,next

大家好,又见面了,我是你们的朋友全栈君。

    参考AtomicInteger类如下方法

    public final int incrementAndGet() {
        for (;;) {
            int current = get();//1
            int next = current + 1;//2
            if (compareAndSet(current, next))//3
                return next;
        }
    }

    我们把获取锁的过程比作拨通女神的电话,在1处由于value值为volatile所以每次都能拿到最新的女神的电话,可能在2的时候女神电话占线,于是3的时候就打不过去呀;这就是多线程的同步问题了,但是没关系呀,再拨,一个for循环,继续播,直到拨通,由此可见,CAS锁叫乐观锁呢是因为觉得不会每次到2的时候都占线吧。(其实看到这代码第一反应是跟死皮赖脸的追女孩子一样,这次约不到下次再约就是了)

    如果偏偏就这么巧,真的每次都2的时候都占线呢?比如有人发布了范冰冰的手机号,偏偏这个手机号还开机,那基本每次打过去都占线的话,这锁就死循环咯,所以说这个锁也不是万能,线程太多(大家都知道范冰冰手机号然后去拨)的时候,错误概率太高,反而效果不好

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127800.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dpkg命令和作用

    dpkg命令和作用dpkg-ipackage.deb安装包   dpkg-rpackage删除包   dpkg-Ppackage删除包(包括配置文件)   dpkg-Lpackage列出与该包关联的文件   dpkg-lpackage显示该包的版本   dpkg–unpackpackage.deb解开deb包的内容   dpkg

    2022年5月11日
    40
  • 了解DN、RDN和CN

    了解DN、RDN和CN了解DN、RDN和CNDN可以看做是到ActiveDirectory中某一对象的路径,ActiveDirectory中的每个对象都有完全唯一的DN。例如我们的用户JamesFine的DN就是”CN=JamesFine,OU=People,DC=contoso,DC=com”。实际上是这样的:DN是由对象本体开始:向上延伸到contoso.com域顶级的DNS命名空间的一串路

    2022年6月18日
    22
  • 大数据监控平台实践之路

    大数据监控平台实践之路大数据监控平台实践之路一、监控体系业务层:应用层:系统层:二、架构设计Telegraf:input:output:调度频率:服务启动:InfluxDB:服务启动:常用命令:Grafana:Grafana主要特性:简单使用介绍:原文地址:大数据监控平台实践之路一、监控体系监控粒度、监控指标完整性、监控实时性是评价监控系统的三要素。从分层体系可以把监控系统分为三个层次:业务层:业务系统…

    2022年5月27日
    32
  • ai算法测试工程师面试_ai面试题

    ai算法测试工程师面试_ai面试题深度学习

    2022年8月11日
    12
  • softmax回归算法实验内容_最小二乘法回归模型

    softmax回归算法实验内容_最小二乘法回归模型简介在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签  可以取两个以上的值。Softmax回归模型对于诸如MNIST手写数字分类等问题是很有用的,该问题的目的是辨识10个不同的单个数字。Softmax回归是有监督的,不过后面也会介绍它与深度学习/无监督学习方法的结合。(译者注:MNIST是一个手写数字识别库,由NYU的Y…

    2022年8月21日
    9
  • customErrors和httpErrors的区别

    customErrors和httpErrors的区别一、概念及对比customErrors 用于捕捉ASP.NET触发的错误,静态html页面或目录不存在等错误,不会被捕捉到。httpErrors 用于捕捉IIS触发的错误,IIS7+版本才支持。二、配置文件1.IIS7及以上:                 ExecuteURL”>

    2022年7月16日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号