wuqiu-ai / daily-interviews

java面试之每日一练
0 stars 0 forks source link

[基础] 第12天 CAS原理 2020-09-07 #77

Open wuqiu-ai opened 4 years ago

wuqiu-ai commented 4 years ago

CAS原理?

wuqiu-ai commented 4 years ago

包含三个操作数,内存位置(V),预期原值(A)和新值(B);

  1. JUC中的atomic包中提供了原子性数据类型以及引用、数组等相关原子性类型和更新操作工具,是很多线程安全程序的首选;
  2. Unsafe类虽然提供CAS服务,但因能够操作任意地址读写而有隐患;
  3. java9之后,可以使用variable handle api来替换unsafe;

CAS的缺点

  1. 如果循环时间长,则开销很大;
  2. 只能保证一个共享变量的原子操作;(用锁)
  3. ABA问题;(增加版本,AtomicStampedReference)