java线程对变量的缓存,是一个线程对应一份,还是一个CPU对应一份。
java的多线程中,会将从内存中读取到的变量值缓存在CPU中,如果有三个线程A,B,C 两个CPU1,2。线程A,B由CPU1执行,线程C由CPU2执行,线程A,B,C有一个共同的变量X,那么对于变量X在CPU中的缓存,是CPU1有一份,CPU2有一份,还是CPU1有两份分别对应线程A,线程B?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
也就是说不同的JVM的实现可能是不一样的呗?JSR规范里没有明确 的要求呗?
内存屏障 xchg 指令之类,
http://zh.wikipedia.org/zh/%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C ,
这是jvm底层考虑的东西,java的线程和内存模型基于jvm,你的好像把jvm的内存、线程和cpu的内存、并行混为一谈
你这问题问的。。让人没法回答。感觉怎么回答都是错的。
让我想起
来了。。
一个线程对应一份,可以看看ThreadLocal这个类
并发大了,内存占用直线上升
一个线程对应一份