Java cas 与 synchronized 的区别

634 阅读1分钟

1、对于资源竞争较少的情况:性能cas>synchronized,使用synchronized同步锁进行线程阻塞和唤醒切换以及用户态内核态间的切换操作额外浪费消耗cpu资源;而CAS基于硬件实现,不需要进入内核,不需要切换线程,操作自旋几率较少,因此可以获得更高的性能。

2、对于资源竞争严重的情况:性能cas<synchronized,CAS自旋的概率会比较大,从而浪费更多的CPU资源,效率低于synchronized。

end