U.compareAndSwapInt(this, CELLSBUSY, 0, 1) this 表示当前对象 CELLSBUSY 偏移量内存地址 0 期望值, 1 更新值 CELLSBUSY = U.objectFieldOffsetk.getDeclaredField("cellsBusy")); 如果 cellsBusy==0 就把内存地址的值改为1 只有一个线程能进入. 此方法是Java的native方法,并不由Java语言实现。 方法的作用是,读取传入对象this在内存中偏移量为CELLSBUSY位置的值与期望值 0 作比较。 相等就把 1 值赋值给 CELLSBUSY 位置的值。方法返回true。 不相等,就取消赋值,方法返回false。 这也是CAS的思想,及比较并交换。用于保证并发时的无锁并发的安全性。
unsafe.compareAndSwapInt aqs
最新推荐文章于 2022-09-05 10:51:21 发布