Java - 多线程CPU缓存

标签 java multithreading caching

我知道线程将变量的值保存在运行时的CPU缓存中,因为这样当需要获取变量中的值时,CPU就不会等待太多时间。

但是例如如果我有这个对象

public class MyObject {
    int a = 2;
}

现在线程执行如下操作:

MyObject obj = new MyObject();
obj.a=3;

我的问题是:
cpu缓存中会保存什么? 所有 MyObject 结构还是只是引用? 我认为所有的结构(更有意义),但我更喜欢问,因为我想确定这一点。

我是一个关于多线程的菜鸟,我确信 CPU 缓存的工作原理更加复杂,但目前我只需要基本信息。

最佳答案

在您的示例中,只有一个线程正在运行。对于此线程,缓存是透明的 - 无法确定某个值是否在缓存、主内存或两者中。首先,所有值都被放入缓存中,但很快,在一个未知的时刻,它们被推出。

“我想确定这一点” - 为什么?您的程序行为不取决于此。

关于Java - 多线程CPU缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775194/

相关文章:

android - 自定义 View 可以知道 onPause 已被调用吗?

python - 向 PyQt5 中的 Thread 函数发送信号导致装饰槽的 TypeError

http - 即使禁用缓存,Safari 也会缓存 GET 请求

wordpress - 对 w3-total-cache 上的特定角色禁用 "Purge from Page Cache"

java - 15个java益智游戏

java - 在哪些架构/操作系统中,其他线程可以在构造函数调用后看到默认的非最终字段值?

windows - 为什么我要使用 "Both"COM 线程模型而不是 "Free"?

android - 清除 Phonegap android 上的用户数据或清除缓存

java - 从嵌套循环返回时返回 null

java - Spring 独立应用程序 |记录