CAS
CAS:Compare and Swap, 翻译成比较并交换。
java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。
CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。
无阻塞算法:一个线程的失败或者挂起不应该影响其他线程的失败或挂起的算法
原子性操作:CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许java调用其他语言
缺点:
ABA问题。因为CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没有发生变化,但是实际上却变化了。ABA问题的解决思路就是使用版本号。在变量前面追加上版本号,每次变量更新的时候把版本号加一,那么A-B-A 就会变成1A-2B-3A。
从Java1.5开始JDK的atomic包里提供了一个类AtomicStampedReference来解决ABA问题。这个类的compareAndSet方法作用是首先检查当前引用是否等于预期引用,并且当前标志是否等于预期标志,如果全部相等,则以原子方式将该引用和该标志的值设置为给定的更新值。
博文参考:
JAVA CAS原理深度分析
AtomicInteger源码分析——基于CAS的乐观锁实现
用AtomicStampedReference解决ABA问题
分享到:
相关推荐
CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)框架,主要用于解决网络应用中的身份验证问题。本压缩包提供了CAS服务端自定义认证的实现,以及CAS客户端的配置...
CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,主要用于实现单点登录(Single Sign-On,SSO)。本教程将详细介绍如何搭建CAS服务,并将其与SQL Server数据库和Spring Security进行集成。...
3. **集成CAS客户端库**:在外部系统中,需要集成CAS客户端库,如Java CAS Client、Spring Security CAS等,它们负责处理与CAS服务器的交互,包括重定向用户到CAS登录页面、接收和验证服务票证。 4. **配置客户端...
CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,主要功能是提供单点登录(Single Sign-On,SSO)服务。在企业环境中,尤其是在已部署了Active Directory(AD)域服务的情况下,将CAS与AD...
CAS(Central Authentication Service)是一种广泛使用的开放源代码单点登录(Single Sign-On,SSO)框架,它允许用户通过一个中央认证服务访问多个应用系统,而无需为每个系统单独进行登录。在实际的企业环境中,...
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 ...
CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,它允许用户通过一个认证过程访问多个应用系统,而无需为每个系统单独登录。CAS 4.1.7是该框架的一个特定版本,发布于...
CAS(Central Authentication Service)是一种广泛使用的开放源码身份验证框架,它允许用户通过单一登录(Single Sign-On,SSO)访问多个应用系统。在你提供的资料中,"Cas5.2.6(cas-overlay-template-5.2.6)服务端...
本文将围绕"iscas.rar_iscas_基准电路_逻辑综合"这一主题,深入探讨这些概念及其在实际应用中的重要性。 iscas基准电路是一套广泛使用的标准测试集,由国际固态电路会议(International Solid-State Circuits ...
【标题】"CAS修改登录页"是一个针对中央认证服务(Central Authentication Service,简称CAS)的定制化实践。在单点登录(Single Sign-On,SSO)系统中,CAS扮演着核心角色,它提供了统一的身份验证服务,使得用户只...
CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,用于在网络上验证用户身份。它允许用户通过一个认证过程访问多个应用系统,而无需为每个系统分别进行登录。在你的场景...
在IT行业中,Cas(Central Authentication Service)是一种广泛使用的开源身份验证和授权框架,它使得单点登录(Single Sign-On, SSO)变得简单。本文将详细介绍如何在IntelliJ IDEA(简称Idea)中导入和编译CAS项目...
本文将深入探讨如何利用Spring Boot、CAS 5.3、Shiro、Pac4J这四个强大的工具来构建一个高效且用户友好的REST接口,以获取CAS(Central Authentication Service)票据,避免用户被重定向到CAS服务器的登录页面。...
CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)系统,它允许用户通过一个认证入口访问多个应用系统,而无需在每个系统上分别进行登录。在这个压缩包中,...
CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,用于在多应用环境中统一用户认证。这个协议由耶鲁大学开发并开源,现在由Apereo基金会维护。标题提到的"cas-server-...
CAS(Central Authentication Service)是耶鲁大学开发的一种基于Web的单点登录(Single Sign-On,简称SSO)协议。在企业或机构的信息系统环境中,它允许用户通过一次登录即可访问多个应用系统,无需多次输入用户名...
CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,SSO)框架,由耶鲁大学开发并维护。它允许用户通过单一的登录验证来访问多个应用系统,从而简化了用户的登录过程,...
《H3C CAS七日通》是一份针对H3C云计算软件套件——H3C Cloud Automation System (简称H3C CAS) 的详尽学习资料,旨在帮助用户在一周内快速掌握该系统的使用和管理。这份资料包含了有声讲解版,以音频形式辅助理解,...
### CAS Restful接口调用详解 #### 一、CAS简介 CAS(Central Authentication Service)是一种开源的单点登录协议和服务实现。它旨在减轻单一Web应用的登录流程,并为多个服务提供一个集中式的认证机制。CAS支持...
3. 配置CAS Client,这可能涉及修改web.xml文件,引入CAS客户端库,并配置客户端的信任CAS Server的地址。 4. 可能需要修改CAS客户端的Java源代码,特别是对于证书验证的问题,可能需要重新编译并替换原有包。 5. ...