请稍等 ...
×

采纳答案成功!

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

关于JMM和重排序、可见性、原子性之间的逻辑关系的疑问?

老师您好,我想理清一下逻辑关系,您说java内存模型是一组规范,但是实际介绍的重排序,可见性,原子性看起来都是一些性质?特别是重排序可以把他看成是cpu或者编译器本来就固有的属性(这些不是JMM规定的规范吧。。。)。

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

正在回答

1回答

正是JMM的出现,使得cpu的重排序不能随心所欲乱重排序,在重排序后要遵守一定的规则,例如happen-before,这就是JMM在重排序的体系。

是的,可以认为JMM定义了一组规范,正是由于这些规范让我们可以使用java语言中volatile,synchronized等关键字或方法来解决由于硬件或软件本身固有的非可见性,重排序,非原子性这些属性所导致的并发编程结果不一致或不正确问题。

你理解的很对,有了这些规范(JMM)可以约束从应用层到底层(CPU硬件等)的开发者们,让他们可以保证我们java中的这些关键字可以得到应有的效果。


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