当前位置: 首页 > 面试题库 >

Java ArrayList.add()方法线程可安全用于纯并行添加吗?

皇甫飞跃
2023-03-14
问题内容

考虑一个采用ArrayList引用并将对象添加到该ArrayList的函数的for循环。我现在想并行执行每个函数调用。

如果我不在乎对象的添加顺序并且没有函数读取或操作任何ArrayList元素,则ArrayList.add()方法线程安全吗?因此,我只想确保在并行调用结束时将所有对象都添加到列表中。


问题答案:

不,它不是线程安全的。使用来包装列表Collections.synchronizedList(),或者在访问列表时使用显式同步。



 类似资料:
  • 我在添加上面提到的两个方面有点麻烦。我有两节课。员工和公司。 employee类保存一些关于雇员的信息,实例变量包括他们的名字、日期、numOfSales等,还有一些方法,如setName、getName等。 然后需要编写一个compareTo()方法,我把它放在employee类中?这将允许员工按其numOfSales实例变量存储的值的升序进行排序。

  • IBM的支持指出,Class.GetAnnotation的实现不是线程安全的。 与其他JVM实现(例如,OpenJDK)相比,我们可以看到它们以线程安全的方式实现类方法。IBM JVM是一个闭源JVM,他们确实会发布一些源代码和他们的JVM一起,但无论什么时候他们的类实现是否线程安全,都不足以做出明确的判断。 类文档没有清楚地说明它的方法何时是线程安全的。那么,将类方法(特别是getAnnotat

  • 关于一次从多个线程访问局部变量的几个问题: > < li> 我有多个线程写入和读取变量值,我是否应该同步访问它? 变量每隔几秒钟从 Thread1 更新一次,每隔几秒钟从 Thread2 读取和更新到数据库。 如果我没有任何逻辑并且没有任何并发问题,会出现哪些问题? 我应该为此使用volatile吗? 编辑: 我想强调的是,我没有任何并发问题。这是我的具体方案: 一个。我的变量名称是 ,它测量 p

  • 问题内容: 请参阅下面的简单示例,该示例计算列表中每个单词的出现次数: 最后是。 但是我的数据流很大,我想并行化作业,所以我写: 但是我注意到这很简单,所以我想知道是否需要显式请求并发映射以确保线程安全: 非并行收集器可以安全地与并行流一起使用吗?从并行流中收集时,我是否应该仅使用并发版本? 问题答案: 非并行收集器可以安全地与并行流一起使用吗?从并行流中收集时,我是否应该仅使用并发版本? 在并行

  • 例如,以下方法: 我关心的是如果我有多个线程调用。对象是否可能被另一个线程覆盖?换句话说,Thread 1调用并获取返回的

  • 看起来它工作得很好,但我想知道我是否必须确保新代码需要线程安全?这里有什么意见吗?抱歉用了假名字,提前致谢。