我有一个计算要求很高的任务,我将分散在多个线程上。每个线程都需要访问相同的大String[][]
。我想知道他们是否都需要在堆上访问相同的String[][]
这一事实会影响性能吗?为每个线程单独访问这个String[][]
复制是否更好(即使它们只需要访问此String[][]
的相同实例)?
请注意,对于String[][] someArray = new String[100][1000000];
(例如),不可能在任何单个时间点同时调用相同的someArray[i]
。通常,每个线程在任何给定的时间点都将使用不同的i
。但是有时候i
在线程中会相同(大多是偶然的)。
每个帖子在someArray
上都是只读的。
答案 0 :(得分:3)
如果您只是阅读这些值,那么它应该不是问题。如果他们正在阅读相同的“我”,那就无所谓了。当你开始写共享内存时会出现问题...
编辑:删除了令人困惑的同步评论。