赞
踩
目录
一、CAS缺点
1、CAS中的ABA问题
2、在竞争激烈以后,CPU开销较大
3、不能保证代码块的原子性
二、synchronized原理
三、锁升级的过程
1、对象头
(1)Mark Word
(2)指向类的指针
(3)数组长度
2、实例数据
3、对齐填充字节
4、偏向锁
CAS操作想要进行赋值时,会拿原来的取值和现在的值比较;但是万一这个值在我们取值之后,被别的线程改变了,但是紧接着又被别的线程改回来了;比较一下值,发现是相同的,我们认为没人修改这个值,可以进行赋值;但是其实这个值已经被改变过来了,这就是CAS中的ABA问题。
举个银行的例子,如果A账户存100万,B拿了50万,在A发现之前