【问题标题】:Accessing different list elements in different threads在不同的线程中访问不同的列表元素
【发布时间】:2014-10-16 20:23:22
【问题描述】:

当没有对列表执行添加/删除操作并且每个线程访问一组固定的索引时,从不同线程访问(读/写)相同ArrayList 的不同元素是否线程安全?线程之间相交? 我认为这里没有必要使用特殊的预防措施(例如锁定块),但我只是想确定:可能会出现问题吗?

【问题讨论】:

  • 是否必须将所有元素保存在同一个集合中(可能是由于所有线程完成后的后处理)?因为如果不是,您甚至可以为每个线程使用不同的列表,然后根据需要组合这些列表。
  • 这不是强制性的,我总是可以让线程在值的副本上工作,然后在所有线程完成后通过重新组合子列表来更新原始列表。但是,如果没有安全问题,我仍然更喜欢更直接的方式!

标签: java multithreading


【解决方案1】:

没有。只要没有删除或添加,数组就不会被调整大小(因此重新创建)并且每个 get(i) 调用都是安全的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多