赞
踩
CAS 被认为是一种乐观锁,乐观锁,会以一种更加乐观的态度对待事情,认为自己可以操作成功。当多个线程操作同一个共享资源时,仅能有一个线程同一时间获得锁成功,在乐观锁中,其他线程发现自己无法成功获得锁,并不会像悲观锁那样阻塞线程,而是直接返回,可以去选择再次重试获得锁,也可以直接退出。
CAS,( Compare And Swap),对比之后交换数据,有几个重要的参数:
(1)this,Unsafe 对象本身,需要通过这个类来获取 value 的内存偏移地址。
(2)valueOffset,value 变量的内存偏移地址。
(3)expect,期望更新的值。
(4)update,要更新的最新值。
比较
expect
的值和内存地址this + valueOffset
中存储的值,如果一致,把地址中的值替换
为update
值,否则失败,然后重新获取内存地址的当前值,并重新计算想要修改的新值,这个重新尝试的过程叫做自旋
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。