2012-11-09 25 views
4

我有一个简单的ArrayList,我通过Java并发性从多个Thread s中提供此ArrayList。每个Thread将仅读取此ArrayList的相同实例。阅读过程中是否有错误发生?在并行系统中读取ArrayList

+2

如果arraylist没有改变,我想不出为什么会有问题,因为所有的线程都在做的是访问列表和阅读。 – DWolf

+1

所以你有多个线程同时写入列表?他们是从列表中读取还是您的读者都在不同的线程? – Perception

+0

@Perception在启动并发之前,列表已被完全填充,因此线程只能读取它。 –

回答

5

只要没有更多的写入使它不可改变使用Collections.unmodifiableList,然后忘记读取的问题。

5

如果列表完全填充并始终以所有线程的只读方式访问,则不会有问题。如果有写入操作,则需要将所有访问同步到列表中,或使用并发列表(如CopyOnWriteArrayList)。

+0

非常感谢。 –

相关问题