并发线程同时添加到ArrayList-会发生什么?

我们有多个线程调用add(obj)ArrayList

我的理论是,当add由两个线程同时调用时,实际上仅将要添加的两个对象之一添加到ArrayList。这看似合理吗?

如果是这样,您如何解决呢?使用类似Vector吗?

回答:

对于ArrayList上的两个线程同时调用add时发生的情况,没有任何保证的行为。但是,根据我的经验,两个对象的添加都很好。与列表相关的大多数线程安全问题在添加/删除时都会处理迭代。尽管如此,我强烈建议不要将Vanilla

ArrayList与多个线程和并发访问一起使用。

向量曾经是并发列表的标准,但是现在标准是使用集合同步列表。

如果您要花任何时间在Java中使用线程,我也强烈建议Goetz等人在实践中使用Java Concurrency。该书更详细地介绍了此问题。

以上是 并发线程同时添加到ArrayList-会发生什么? 的全部内容, 来源链接: utcz.com/qa/421313.html

回到顶部