【发布时间】:2014-11-22 23:30:26
【问题描述】:
我正在使用泛型创建对象的 ArrayList。每个线程都会计算对象并将其存储在数组列表中。
但是,当查看静态和易失的 ArrayList 时,所有对象属性都设置为空。我的想法与垃圾收集器删除线程中的实例有关,因此一旦线程完成,就没有对它们的引用。
任何帮助真的很有帮助吗?
【问题讨论】:
-
你能发布一些示例代码吗?
-
垃圾收集器从不“清空”变量或以其他方式更改对象。
null的值要么是显式分配的,要么是默认值。现在,使用来自多个线程的 ArrayList 本质上是有问题的 - 至少不使用synchronized。 -
你的想法是错误的。
-
目前我正在测试它,并且在同一个线程中我可以执行 topDesigns.getList().get(0).isEvaluated() 。 (其中 getList() 返回 ArrayList 和 isEvaluated() 检查对象是否具有状态(值!= null)和 getValue() 返回值。它在线程中返回 true,但一旦线程退出并返回到主线程所有对象的值都变为null。
标签: java multithreading arraylist