Java
自旋锁 标签描述

🍀介绍 CAS(Compareandswap),即比较并交换。我们平时所说的自旋锁或乐观锁,其中的核心操作实现就是CAS。 🍀保证原子操作 CAS适用于保证原子操作不被干扰。原子操作即最小不可拆分的操作,也就是说操作一旦开始,就不能被打断,直到操作完成。在多线程环境下,原子操作是保证线程安全的重要手段。比如说,假设有两个线程在工作,都想对某个值做修改,就拿自增操作来说吧,要对整数i进行自增操作,需要做三个步骤: 从内存读取i的当前值 对i值进行加1操作 将i值写回内存 假设两个进程都读取了i的当前值,当前值为0。这时候A线程对i加1了,B线程也加1,最后i的是1,而不是2。 这是因为自...

自旋锁是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上线文切换的消耗,缺点是循环会消耗CPU。 publicfinalintgetAndAddInt(Objectvar1,longvar2,intvar4){ intvar5; do{ var5=this.getIntVolatile(var1,var2); }while(!this.compareAndSwapInt(var1,var2,var5,var5+var4)); returnvar5; }

  Olt1rl96HKat   2023年12月15日   11   0   0 自旋锁自旋锁