Java,从多个线程编辑数组

标签 java arrays multithreading thread-safety

我有很多大小为 4096 (16x16x16) 的字节数组,我想一次从多个线程编辑它们,任何元素一次被多个线程写入的可能性很小,而且几乎不可能超过 3 个将一次访问它(元素之一)(写入或读取)。
但是整个数组可以同时被多个线程访问。

这会导致任何问题吗?如果是,那么如何修复/避免它们?
我知道读书要安全,听说写作有些问题
代码需要快速(基于实时的东西)所以我不能同步它,我不能使用任何 ArrayList,因为这会导致内存问题。 (会有 1000-20000(或更多)这样的数组)

最佳答案

每次有人在同一句话中说实时与 Java 时,我的兴趣就会达到顶峰,因为实时具有大多数人不理解的特定含义(oracle/sun 有实时 jvm 可供购买)

但我跑题了,数组读写是原子的,因此是线程安全的。 2 个线程不能同时写入数组,因为操作不能分解为更小的东西(允许调度程序中途中断)只要你小心(例如不读取值,做一些数学运算然后写入它返回数组并期望给定索引处的值保持不变)

所以简而言之,只要您围绕它的逻辑也是线程安全的,就没有什么可以阻止您这样做。

关于Java,从多个线程编辑数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728307/

相关文章:

android - 在 Android 中使用计时器跳出无限循环

java - 如何进行延迟的非阻塞函数调用

arrays - Perl - 匿名 HashMap 和数组 - 几个问题

java - 上下文服务竞争条件

java - 如何修复 my/hibernate.cfg.xml 文件?

java - spring-data-redis java.lang.ClassCastException

javascript - 获取由 javascript 读取的数组文本字段值

php - 正则表达式不适用于 mysql_fetch_array

c# - 有人可以解释这里发生的Parallel.ForEach循环逻辑吗?

java - 在客户端计算机上强制下载