老师您好,我想理清一下逻辑关系,您说java内存模型是一组规范,但是实际介绍的重排序,可见性,原子性看起来都是一些性质?特别是重排序可以把他看成是cpu或者编译器本来就固有的属性(这些不是JMM规定的规范吧。。。)。
所以为了理清逻辑我可不可以这样认为,JMM定义了一组规范,正是由于这些规范让我们可以使用java语言中volatile,synchronized等关键字或方法来解决由于硬件或软件本身固有的非可见性,重排序,非原子性这些属性所导致的并发编程结果不一致或不正确问题。有了这些规范(JMM)可以约束从应用层到底层(CPU硬件等)的开发者们,让他们可以保证我们java中的这些关键字可以得到应有的效果。老师您觉得我这样的逻辑正确吗。因为我觉得把JMM规范跟可见性、原子性、重排序这些本身固有的性质画等号或者包含关系有点不符合正常的逻辑?希望老师能回答,谢谢!