标题为: 线程可见性问题:如果我只在一个cpu上运行多线程。如果exieted变量visibity问题? 我认为线程将共享缓存,没有任何可见性,任何其他意见? 谢谢高级。
答案 0 :(得分:2)
关注Java Memory Model - CPU体系结构(缓存等)的细节是从您身上抽象出来的,并由JVM透明地处理。
Java内存模型(JMM)定义了多线程程序的允许行为[...]它将执行时限制放在线程和主内存之间的关系上,以实现一致和可靠的Java应用程序。通过这样做,它可以在多线程环境中推理代码执行,即使面对动态编译器,处理器和缓存执行的优化。
Java是跨平台的,因此您不能依赖于某个特定单核机器的特性。
参见Brian Goetz撰写的Fixing the Java Memory Model, Part 2。