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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Idea激活码最新教程2024.2.0.2版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2024.2.0.2版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2024 2 0 2 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2024 2 0 2 成功激活

    2025年5月28日
    3
  • Linux Sendfile 的原理与优点[通俗易懂]

    Linux Sendfile 的原理与优点[通俗易懂]sendfile函数在两个文件描写叙述符之间直接传递数据(全然在内核中操作,传送),从而避免了内核缓冲区数据和用户缓冲区数据之间的拷贝,操作效率非常高,被称之为零拷贝。sendfile函数的定义例如以下:#include<sys/sendfile.h>ssize_tsendfile(intout_fd,intin_fd,off_t*offset,size_tc…

    2022年5月6日
    67
  • 安卓反编译_apk可以反编译吗

    安卓反编译_apk可以反编译吗本帖最后由好奇害死猫咪啊于2017-5-621:48编辑本教程为长期更新贴,有问题请及时反馈。如有更新请恕不另行通知。【前言】闲来无事水一贴。。。今天写个教程吧,反编译SystemUI实现状态栏时钟居中。其实说实话本来对华为靠右边的时间不怎么介意的,可一位朋友说什么也想换成类似iPhone的居中式,甚至不惜去刷XP框架,装重力工具箱。。当然了,结果大家可能已经想到了,首先是重力工…

    2022年9月18日
    2
  • copy和deepcopy[通俗易懂]

    copy和deepcopy[通俗易懂]总结一下,如果一个集合中的元素是字符串,copy之后则是两个互不相干的新集合,内存地址也不一样,修改任意一个另一个不会做出改变,但是如果其中的元素有数组的话,那么情况就不一样了,copy后虽然集合是两个完全新的集合,但是集合中的数组指向的是同一个内存地址,在此集合中对其中的数组数据进行修改,另一个集合中的元素是数组的内容也会改变,如果想完完全全独立出来是两个独立的集合,就得使用deepcopy而不…

    2022年10月2日
    2
  • js判断字符串是否为空格_替换字符串c++

    js判断字符串是否为空格_替换字符串c++//判断字符串是否为空functionisNull(variable){if(variable!==null||variable!==undefined||variable!==”){ if(variable.replace(/(^s*)|(s*$)/g,””).length>0){returnfalse} }returntrue;

    2025年8月2日
    3
  • div文字垂直居中

    div文字垂直居中

    2021年8月24日
    46

发表回复

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

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