CAS
CarlosXu14
日常分享代码心得,勿吐槽
展开
-
ABA问题,原子引用问题
CAS操作可能带来ABA问题,因为CAS操作需要在操作值的时候,检查值有没有发生变化,如果没有发发生变化则更新。如果一个值原理是A,变成了B,又变成了A,那么使用CAS进行检查时会认为它的值没有变化,但是实际上却变了。 ABA问题的解决办法就是使用版本号,在变量前面追加版本号,每次变量更新时把版本号加1,那么A-B-A就会变成1A-2B-3A。 从jdk1.5开始,jdk中的Atomic包里提供了...原创 2019-11-06 22:08:26 · 365 阅读 · 0 评论 -
java线程安全问题,CAS
什么是线程安全问题 答:当多个线程同时共享一个全局变量,做写的时候,可能会受到其他线程的干扰,导致数据有问题,这种现象叫做线程安全问题。做读的时候,不会产生线程安全的问题。对局部变量不会发生线程安全问题。 线程如何实现同步:即保证数据的原子性 解决办法: synchronized–自动锁 lock–jdk1.5并发包–手动 同步的前提: 要有两个线程以上,需要发生同步; 多个线程想同步,...原创 2019-10-24 22:29:13 · 168 阅读 · 0 评论