Java中为啥boolean类型是原子性的

第一个:明确boolean类型数据占几个字节,《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”,因此可以认为单独使用时占4个字节,在数组中占用1个字节。
第二个:Java内存模型规定,允许虚拟机将没有被volatile修饰的64位数据的读写操作划分成两次32位的操作,因此不具有原子性。对于64位数据是具有原子性的。可参考《深入理解Java虚拟机》12.3.4相关章节,有详细说明。

■网友
【Java中为啥boolean类型是原子性的】 原子性的意思是没有中间结果。


    推荐阅读