【发布时间】:2014-10-16 20:23:22
【问题描述】:
当没有对列表执行添加/删除操作并且每个线程访问一组固定的索引时,从不同线程访问(读/写)相同ArrayList 的不同元素是否线程安全?线程之间相交?
我认为这里没有必要使用特殊的预防措施(例如锁定块),但我只是想确定:可能会出现问题吗?
【问题讨论】:
-
是否必须将所有元素保存在同一个集合中(可能是由于所有线程完成后的后处理)?因为如果不是,您甚至可以为每个线程使用不同的列表,然后根据需要组合这些列表。
-
这不是强制性的,我总是可以让线程在值的副本上工作,然后在所有线程完成后通过重新组合子列表来更新原始列表。但是,如果没有安全问题,我仍然更喜欢更直接的方式!
标签: java multithreading