并发安全:
系统中某一时刻多个线程并发访问一段有线程安全性问题的代码、方法后,最终出现不正确的结果或者并非最初所预料的结果
如何解决:
解决并发安全有两种解决方案:悲观锁、乐观锁
悲观锁:以独占的方式执行一段代码,如:Lock、Monitor、Mutex、自旋锁、事件对象(AutoResetEvent、ManualResetEvent)
乐观锁:乐观锁不是锁,应该叫乐观机制。乐观的认为数据不会被其他线程修改,在修改值时判断值是否被修改,程序中需要借助CAS算法实现乐观锁。乐观锁适用于读多写少的场景
CAS:
CAS,是“CompareAnd Swap”的缩写,中文简称就是“比较并替换”,在CAS算法中,它使用了3个基本操作数:内存地址对应的值V,旧的预期值A(旧值),要修改的新值B(新值),
当且仅当预期值A和内存值V相同时,才将内存值修改为B,否则什么都不做,最后返回现在的V值。
具体可以看我这篇文章:https://www.cnblogs.com/fanfan-90/p/12996535.html(原子操作-Interlocked(CAS))
参考: