代码:
预期结果:10万
执行结果:1-10万之间
原因:
CAS+自旋 解决:(线程+1后,再去对比主内存的i,是否是我自己改之前的0)
代码:
原理:
CAS 缺点:
CPU开销:因为自旋需要不断去循环判断
ABA问题:在线程1修改期间,线程2对A的属性做了修改,最后还是A,其实里面改了
怎么解决ABA问题:(比较时间戳)
高并发的情况:LongAdder比Atomic性能更高,阿里开发手册推荐使用(原理把:数据分段了,减少自旋次数)
代码:
预期结果:10万
执行结果:1-10万之间
原因:
CAS+自旋 解决:(线程+1后,再去对比主内存的i,是否是我自己改之前的0)
代码:
原理:
CAS 缺点:
CPU开销:因为自旋需要不断去循环判断
ABA问题:在线程1修改期间,线程2对A的属性做了修改,最后还是A,其实里面改了
怎么解决ABA问题:(比较时间戳)
高并发的情况:LongAdder比Atomic性能更高,阿里开发手册推荐使用(原理把:数据分段了,减少自旋次数)