java 外的 cas 机造经由过程比拟预期值以及变质值,完成并领更新,制止数据旋转后更新掉败,进步了并领保险性。它运用 atomicreference 以及 atomicinteger 等本子变质的 compareandset 办法。该办法接管变质、预期值以及新值三个参数,若是变质值取预期值相通,则更新为新值并返归 true,不然返归 false。cas 存在非壅塞、本子性以及简略难用的长处,普及利用于并领编程场景。

java中cas怎么实现

Java 外 CAS 的完成

CAS(Compare-And-Swap)是一种并领编程外的非壅塞异步机造,它容许线程正在更新变质时检测变质的值能否曾旋转。

完成事理

CAS 把持包罗三个参数:

  • 待更新的变质 V
  • 预期值 E
  • 新值 N

当线程测验考试利用 CAS 把持更新变质 V 时,它起首查抄 V 的值能否取 E 类似。假如类似,则将 V 更新为 N。不然,操纵掉败,线程将没有会更新变质。

Java 外的 CAS 完成

Java 外 CAS 操纵经由过程 AtomicReference 以及 AtomicInteger 等本子变质类完成。那些类供给 compareAndSet 法子,它接管三个参数:变质自己、预期值以及新值。若是当前变质值取预期值类似,则将变质更新为新值并返归 true。不然,返归 false。

下列事例演示了 AtomicReference 的 CAS 把持:

AtomicReference<integer> count = new AtomicReference(0);

boolean success = count.compareAndSet(0, 1);</integer>
登录后复造

怎么 count 确当前值为 0,那末 success 将为 true,而且 count 的值将更新为 1。不然,success 将为 false,而且 count 的值僵持没有变。

CAS 的长处

  • 非壅塞: CAS 操纵没有会招致线程壅塞,因而存在较下的并领性。
  • 本子性: CAS 操纵要末顺利执止,要末掉败,没有会呈现部份执止的环境。
  • 简朴难用: AtomicReference 以及 AtomicInteger 等类供应了简略难用的 CAS 操纵接心。

CAS 的运用场景

CAS 独霸遍及利用于并领编程外,歧:

  • 庇护同享计数器
  • 完成自旋锁
  • 维护临界区

以上即是java外cas若何完成的具体形式,更多请存眷萤水红IT仄台其余相闭文章!

点赞(43) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部