请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

不知道是否真的理解原子性

原子性保持互斥的关键,用cas的工具包就行,但是不理解原子性。也知道用cas工具包。这样理解有什么用。如果高并发保证原子性,就用cas工具包就行,理解原子性只是会说。

正在回答

1回答

你好,cas只是原子性问题解决的一个手段,他的关键在于要能识别出需要保证原子性的操作,然后选择合理的方面,有时可借助synchronized、分布式锁等来保证原子性。
原子性的识别根本表现是对共享资源的多次操作,比如课程里count+1操作,从本质上说count是共享资源,可以被多个线程同时读取和更新,每个线程操作时都是先读取到本地,然后再执行+1更新,这两部操作如果保证不了原子性,就会出现个别线程-+1没实际操作的问题。
通常放在static域的可变数据更新都可能有这种问题,因此我们实际进行更新时一般都会带检查更新(尤其是db更新时尽量加上合适的乐观锁检查)。如果检查失败,那么代表更新之前有其他操作先更新了,需要获取最新数据再尝试更新,就是典型的cas原理,如果使用(分布式)锁,是强制保证被锁保护的代码段原子性执行,但对性能会有一定损失。

1 回复 有任何疑惑可以回复我~
  • 提问者 car #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-05-26 19:41:44
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信