在Java中,如果每个线程写入单独的单元空间,是否需要同步对数组的写访问?
2022-09-01 16:03:09
如果每个线程写入单独的单元空间,是否需要在 Java 中同步对数组的写入访问?
编辑:具体来说,数组可以是基元数组,也可以是不可变对象数组。前任。整数数组或字符串数组。
如果每个线程写入单独的单元空间,是否需要在 Java 中同步对数组的写入访问?
编辑:具体来说,数组可以是基元数组,也可以是不可变对象数组。前任。整数数组或字符串数组。
否,不需要同步。
它在JLS §17.6单词撕裂中定义:
Java虚拟机的一个实现考虑因素是每个字段和数组元素都被认为是不同的。对一个字段或元素的更新不得与任何其他字段或元素的读取或更新进行交互。特别是,分别更新字节数组的相邻元素的两个线程不得干扰或交互,并且不需要同步来确保顺序一致性。
如果读取访问也以相同的方式分区,则不需要按照 bkail 的链接进行同步。
但是,如果线程读取彼此的写入,则仍然需要具有内存屏障来强制同步缓存内容。否则,threadys 可能会获得不一致的读取结果。