并发编程之cas
cas compare and swap 原语操作通过cpu指令实现。cas操作是一组不可分割的指令,必须连续执行,在执行过程中不允许被中断。
cas(V,E,U) 一般情况包含三个参数:V表示要更新的变量,E表示期望的值,U表示新值。cas希望提供一个期望值,如果当前值与期望值相同则执行交换,更新变量为新值。
java 中的cas依赖于Unsafe类实现,Unsafe类位于sun.misc包中,Unsafe类的所有方法都是native方法。Unsafe类具有向c语言一样的指针,可以直接操作内存,可以直接调用操作系统底层资源执行相应的任务。java中cas基于Unsafe的compareAndSwap方法(Int ,Long,Object)实现。
java concurrent包下的Atomic系列类与Lock都是基于Unsafe实现。