java线程对变量的缓存,是一个线程对应一份,还是一个CPU对应一份。

发布于 2021-11-20 05:30:42 字数 148 浏览 643 评论 6

java的多线程中,会将从内存中读取到的变量值缓存在CPU中,如果有三个线程A,B,C 两个CPU1,2。线程A,B由CPU1执行,线程C由CPU2执行,线程A,B,C有一个共同的变量X,那么对于变量X在CPU中的缓存,是CPU1有一份,CPU2有一份,还是CPU1有两份分别对应线程A,线程B?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

后知后觉 2021-11-26 09:20:40

也就是说不同的JVM的实现可能是不一样的呗?JSR规范里没有明确 的要求呗?

顾挽 2021-11-26 09:19:54

内存屏障 xchg 指令之类,
http://zh.wikipedia.org/zh/%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C ,
这是jvm底层考虑的东西,java的线程和内存模型基于jvm,你的好像把jvm的内存、线程和cpu的内存、并行混为一谈

多彩岁月 2021-11-26 09:12:48

你这问题问的。。让人没法回答。感觉怎么回答都是错的。

让我想起

volatile

来了。。

疑心病 2021-11-26 03:25:56

一个线程对应一份,可以看看ThreadLocal这个类

半世蒼涼 2021-11-25 15:21:59

并发大了,内存占用直线上升

柳絮泡泡 2021-11-24 20:58:46

一个线程对应一份

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文