使用volatile修饰long和double为啥就变成原子的?

来源:9-5 jmm的内存可见性

厥~~~

2019-10-12

老师你好。在32位虚拟机下,long和double操作并不是原子的,所以多线程操作中读写会出现问题。volatile并不能保证原子性,但是用volatile修饰long和double在32位下的操作为啥就变成原子的了呢?

写回答

1回答

翔仔

2019-10-13

同学好,不是说因为volatile变成原子的,volatile只是保证可见性,由于long和double不像一般的基本类型一样一次性完成赋值操作,是要分成两段进行,而加上volatile后,jvm应该是被设计成确保long和double是具备原子性的,但本身不是volatile来确保原子性的

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程