博客
关于我
CAS原理
阅读量:606 次
发布时间:2019-03-12

本文共 752 字,大约阅读时间需要 2 分钟。

最终优化后的文章

什么是CAS

CAS是比较与交换的一种并发控制算法,用于处理并发问题。它通过比较内存值V与预期值E,然后在两者匹配时将V设为新值B。若不匹配,则无改动。这种机制高效且弱锁,能避免死锁。

CAS理解

CAS包含三个操作数:V(变量)、E(预期值)、B(新值)。当且仅当V等于E时,执行V=B。其他情况不变。这种设计使得CAS具有原子性和非阻力。

CAS步骤

CAS操作假设自己能成功,并认为自己是最终获取成功的线程。当多线程执行时,如果多线程使用一个变量,只有一个线程会成功更新,其他线程失败。此失败不会阻塞线程,线程继续尝试或放弃。

CAS优势
  • 优雅替代锁:无需复杂的锁结构。
  • 性能优势:无锁机制,性能远超锁,降低系统开销。
  • 不防御死锁:更高并发制约点下的更优选择。
  • 常用语言中的实现

    Java中的AtomicLong实现了CAS,简单易用。其背后依赖CPU支持的原子指令,确保线性时间复杂度。其他语言如C/C++也有类似机制,通过INTERlocked和-exchanging指令实现。

    CAS案例

    编写一个简单案例观察CAS行为。创建多个线程同时修改共享变量,通过日志记录每次操作结果。发现行为是否符合预期,列举成功与失败情况。

    ABA问题

    使用带版本号的原子引用,如AtomicStampedReference来解决ABA问题。当变量的值冲突,通过记录版本号确保正确性。

    总结

    理解CAS需要手头案例和持续实践。通过观察日志,发现潜在问题,如ABA冲突。学会使用高级工具如带版本号的原子引用来完善实现,确保正确性。案例展示实用性,巩固理解。

    小彩蛋

    调试工具如Visual Studio Code能帮助识别线程问题,选择正确的调试模式确保数据流正确。是一种直观的方式调试并发问题。

    转载地址:http://bzwaz.baihongyu.com/

    你可能感兴趣的文章
    nyoj------203三国志
    查看>>
    NYOJ-525 一道水题
    查看>>
    nyoj58 最少步数
    查看>>
    N皇后问题
    查看>>
    OAuth 2.0 MAC Tokens
    查看>>
    OAuth 及 移动端鉴权调研
    查看>>
    OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式&授权码模式
    查看>>
    OAuth2 Provider 项目常见问题解决方案
    查看>>
    OAuth2 vs JWT,到底怎么选?
    查看>>
    Vue.js 学习总结(14)—— Vue3 为什么推荐使用 ref 而不是 reactive
    查看>>
    oauth2-shiro 添加 redis 实现版本
    查看>>
    OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
    查看>>
    OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
    查看>>
    OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
    查看>>
    OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
    查看>>
    OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
    查看>>
    OAuth2.0_授权服务配置_三项内容_Spring Security OAuth2.0认证授权---springcloud工作笔记141
    查看>>
    OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
    查看>>
    OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
    查看>>
    OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
    查看>>