采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
原子性保持互斥的关键,用cas的工具包就行,但是不理解原子性。也知道用cas工具包。这样理解有什么用。如果高并发保证原子性,就用cas工具包就行,理解原子性只是会说。
你好,cas只是原子性问题解决的一个手段,他的关键在于要能识别出需要保证原子性的操作,然后选择合理的方面,有时可借助synchronized、分布式锁等来保证原子性。原子性的识别根本表现是对共享资源的多次操作,比如课程里count+1操作,从本质上说count是共享资源,可以被多个线程同时读取和更新,每个线程操作时都是先读取到本地,然后再执行+1更新,这两部操作如果保证不了原子性,就会出现个别线程-+1没实际操作的问题。通常放在static域的可变数据更新都可能有这种问题,因此我们实际进行更新时一般都会带检查更新(尤其是db更新时尽量加上合适的乐观锁检查)。如果检查失败,那么代表更新之前有其他操作先更新了,需要获取最新数据再尝试更新,就是典型的cas原理,如果使用(分布式)锁,是强制保证被锁保护的代码段原子性执行,但对性能会有一定损失。
非常感谢!
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.7k 1
1.1k 18
1.1k 15
3.5k 12
1.2k 12