并发线程同时添加到ArrayList-会发生什么?
我们有多个线程调用add(obj)
上ArrayList
。
我的理论是,当add
由两个线程同时调用时,实际上仅将要添加的两个对象之一添加到ArrayList
。这看似合理吗?
如果是这样,您如何解决呢?使用类似Vector
吗?
回答:
对于ArrayList上的两个线程同时调用add时发生的情况,没有任何保证的行为。但是,根据我的经验,两个对象的添加都很好。与列表相关的大多数线程安全问题在添加/删除时都会处理迭代。尽管如此,我强烈建议不要将Vanilla
ArrayList与多个线程和并发访问一起使用。
向量曾经是并发列表的标准,但是现在标准是使用集合同步列表。
如果您要花任何时间在Java中使用线程,我也强烈建议Goetz等人在实践中使用Java Concurrency。该书更详细地介绍了此问题。
以上是 并发线程同时添加到ArrayList-会发生什么? 的全部内容, 来源链接: utcz.com/qa/421313.html