请稍等 ...
×

采纳答案成功!

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

原子性和可见性得到保证之后那么就能保证线程安全吗?

老师,原子性和可见性得到保证之后那么就一定能保证线程安全吗?

假设 volatile int a = 2,这时候有两个线程同时用原子操作对a这个值减去1,最终一定会得到0吗?,会不会出现一种情况他们同时将2-1 后的结果赋值给a导致最终a = 1,如果这时候有互斥性做保证(顺序执行),那么肯定一定能得到0,但是仅有原子性和可见性我不敢肯定一定会得到0,我想的是原子性只能保证将多个操作合为一个操作,但是它不能保证让线程顺序执行呀,还是存在同时执行的情况哇,恳请老师指点一下,感谢老师!

正在回答

1回答

特别好的问题。

我理解的原子性,是包含互斥属性的,即便是多线程,只要具备原子性,那么就不存在同时执行的情况。也就是说,具备原子性就可以保证不同时执行了,例如并发二期课程讲的AtomicInteger原子类,例如CAS。

参考:https://www.zhihu.com/question/353542624/answer/905449728

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信