锁升级的过程;CAS;对象内存布局问题;object在内存中占几个字节;
一.CAS是什么?
CAS(Compare and swap)比较与交换, 是一种有名的无锁算法,CAS的3个操作数:内存值V,旧的预期值A,要修改的新值B
CAS可保证在无锁的状况下,多给线程对一个值的更新
当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值(A和内存值V相同时,将内存值V修改为B),而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试(否则什么都不做)
经典ABA问题:当读取到的内存值V是被修改过(只是1变为2又变为1)这种情况,
原创
2020-08-17 20:18:38 ·
353 阅读 ·
1 评论