Java ArrayList 引用

标签 java multithreading arraylist

我正在使用泛型创建对象的 ArrayList。每个线程都会计算对象并将其存储在数组列表中。

但是,当查看静态且易失的 ArrayList 时,所有对象属性都设置为 null。我的想法与垃圾收集器删除线程中的实例有关,因此一旦线程完成,就不会引用它们。

任何帮助真的会有帮助吗?

最佳答案

垃圾收集器不会从数组列表中删除实例1。这不是问题所在。

问题很可能是您在没有正确同步的情况下访问和更新数组列表对象。如果同步不正确,一个线程将不会总是看到另一个线程所做的更改。

声明对 ArrayList 对象的引用只能保证线程将看到相同的列表对象引用。它不保证列表对象上的操作会发生什么。

<小时/>

1 - 假设 GC 运行时数组列表可达,那么所有已正确添加到列表中的元素也将可达。垃圾收集器不会删除任何可达的内容。此外,GC 永远不会访问您的应用程序仍然可以看到的对象并将普通引用更改为 null

关于Java ArrayList 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27083770/

相关文章:

java - 为什么不同步会使 ArrayList 更快但更不安全?

java - 当关联Java对象时,你必须有一个与其关联的Java对象的列表吗?

java - 在 spring web 应用程序中手动重置 session 超时(保持 Activity 状态)

java - 适当使用事件监听器模式

java - 如何学习线程,尤其是在 Java 中

iphone - NSAutoreleasepool 泄漏 - 不明白为什么?

objective-c - 在异步派发给它之前是否需要检查当前线程是否是主线程?

java - 将列表作为值插入映射中

Android ArrayList<String> 存储未恢复回其保存的排序顺序

java - 减去 bigDecimal 数字会产生精度 0?