我知道线程将变量的值保存在运行时的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/