CAS的一些局限性

都说乐观锁好,使用简单,性能好,那有什么局限性呢?

请求越多,更改的并发量越大,势必使很多请求持有的值都是旧值

要么丢失变更直接放弃,如果是业务层面写操作,直接影响业务

或者循环重试,这样又会有更多的失败,带来更久的自旋,浪费CPU资源

重则拖垮整个系统

 

拿 java.util.concurrent.atomic.AtomicInteger 举例

 

如果CAS更新失败,会一直自旋

因此CAS不适用于竞争特别激烈的场景

 

发表评论

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

滚动至顶部