public final int getAndIncrement() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next)) return current; } }
首先CAS是一种乐观锁,它没有锁的概念,没有同步,通过比较预期值(版本号)和当前值来确认能否修改,如果比较一致则可以修改,否则就自旋(死循环),调整版本号,重新计算,重新检测,再判断是否一致。所以存在浪费CPU的问题。
上面这个是Java AtomicInteger源码,实现i++。体会下代码逻辑:
假设,一开始value值是1,两个线程同时进来自增,线程1、线程2的预期值和新值一样,分别是1,2。假设线程2,检测当前值和预期值一样都是1 然后用新值2修改。线程1再来检测,发现此时当前值是2,而预期值是1,所以失败,进入下一次循环,此时当前值是2,所以重新获得预期值2(相当于提升了版本号),新值3,再去检测,此时当前值和预期值一样都是2(如果此时又有线程3修改,则又会重复以上步骤),所以修改成功,最后是3.
所以如果线程写操作频繁,那么自旋时间越久,所以CAS不适合写多的场景。
https://www.jianshu.com/p/1acdfac2b4e4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
相关推荐
cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x...
CAS协议,包括cas1.0和cas2.0的协议,cas 协议分为两部分,一部分是票据-ticket,一部分是url。
cas4.2.7 实现其他系统和cas互相认证互信 cas4.2.7 实现其他系统和cas互相认证互信 cas4.2.7 实现其他系统和cas互相认证互信
H3C CAS 3.0版 H3C CAS 3.0产品培训胶片 H3C CAS-云计算管理平台技术白皮书V2.0 H3C CAS-云计算管理平台 安装指导-5W101-整本手册 H3C CAS-维护手册V2.0 H3C CAS-工程开局指导手册V2.0 H3C CAS-Rest API H3C ...
CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案
包含cas源码、cas使用说明文档(包含配置信息)、连接数据库所需jar包、cas服务端自定义返回值等
n cas-server-3.4.2\modules\cas-server-support-jdbc-3.4.2.jar 、 cas-server-integration-restlet-3.4.2.jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下。 n 数据库驱动 jar 拷贝...
CAS源码分析图,
H3C_CAS_LINUX安装cas-tools
1.CAS-集成mysql 2.CAS-日志审计 3.CAS-连接池配置 4.CAS-自定义错误信息 5.CAS-识别json文件 6.CAS-页面缓存记住我 7.CAS-cookie设置 8.CAS-tgc设置 9.CAS-登出 10.CAS-redisCluster集群存储ticket(相应redis必须...
cas源码,可直接使用 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS 是 Yale ...
cas6.3版本 tomcat环境准备好,mysql设置成application.properties中提示,thekeystore自己生成放入tomcat并需要在jdk中导入证书
cas4.2.7服务端+cas客户端+示例程序+环境搭建之客户端war包 一切跑不起来的程序和走不通的教程都是耍流氓,二话不说,先按照我的步骤把程序跑起来在说吧。 请看博客...
CAS 代码和所依赖的jar
详细描述了cas 自定义登陆页面的配置与demo
CAS实现单点登录(sso)搭建流程
CAS restFul 接口调用 获取票据
cas +shiro集成cas +shiro集成cas +shiro集成cas +shiro集成cas +shiro集成cas +shiro集成cas +shiro集成
cas-client-3.2.1-release.zip
CAS 协议3.0 身份认证3.0协议 CAS 协议3.0 身份认证3.0协议CAS 协议3.0 身份认证3.0协议