使用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来确保原子性的
00
相似问题