巩义云启网站建设,常州第一门户网,东莞网站建设完整,榆次做企业网站Java程序的 内存可见性保证 可以分为下列3类
1#xff09;单线程程序
单线程程序不会出现内存可见性问题。 编译器、runtime、处理器会共同确保单线程程序的执行结果与该程序在顺序一致性模型中的执行结果相同。
2#xff09;正确同步的多线程程序
Further Reading …Java程序的 内存可见性保证 可以分为下列3类
1单线程程序
单线程程序不会出现内存可见性问题。 编译器、runtime、处理器会共同确保单线程程序的执行结果与该程序在顺序一致性模型中的执行结果相同。
2正确同步的多线程程序
Further Reading JMM对正确同步的多线程程序的内存一致性的保证
3未同步/未正确同步的多线程程序
对于未同步或未正确同步的多线程程序JMM不保证执行结果与该程序在顺序一致性模型中的执行结果一致JMM只提供最小安全性保障。线程执行时读取到的值要么是之前某个线程写入的值要么是默认值0NullFalseJMM保证线程读操作读取到的值不会无中生有Out Of Thin Air的冒出来。
为了实现最小安全性JVM在堆上分配对象时首先会对内存空间进行清零然后才会在上面分配对象(JVM内部会同步这两个操作)。因此在已清零的内存空间Pre-zeroed Memory分配对象时域的默认初始化已经完成了。 -----------------------------------------------------------------------------摘自 书名Java并发编程的艺术 作者方腾飞魏鹏程晓明