首页 > 解决方案 > 物理设备上的线程工作副本是什么/在哪里

问题描述

从java规范

每个线程都有一个工作内存,它保存自己必须使用或分配的变量的工作副本。当线程执行程序时,它对这些工作副本进行操作。主存储器包含每个变量的主副本。关于何时允许或要求线程将其变量工作副本的内容传输到主副本或反之亦然,有一些规则。

“线程工作副本”是什么/在哪里?他们指的是CPU缓存还是RAM?

我困惑的原因:

就本章而言,动词使用、分配、加载、存储、锁定和解锁线程可以执行的名称操作。主内存子系统可以执行的动词读取、写入、锁定和解锁名称操作。

他们是否使用汇编代码引用这些说明?

注意:我知道规范是旧的,我将此问题标记为 Java 14。我这样做是因为该构造仍然适用。

编辑:

我创建了以下图像,可以将其标记为正确吗?

在此处输入图像描述


这是我的理解。如果以下图片有任何问题,请发表评论:

在此处输入图像描述

标签: javamultithreadingconcurrencyjava-14

解决方案


“工作副本”是一种逻辑结构,而不是物理结构。

每个线程的完整数据都将在 RAM 中找到,其中的一部分可能会或可能不会作为副本存在于 CPU 缓存中,具体取决于 CPU 上次需要它们的时间。


推荐阅读