ArrayList.clone() 可以返回 null 吗?

问题描述 投票:0回答:1

我有一个线程不断向 ArrayList 添加对象,并定期使用 ArrayList.clear() 清除它

另一个线程首先使用 ArrayList.clone() 克隆它,然后使用克隆

有时这会给出 NullPointerException 并表示应该克隆的 ArrayList 为 null。

这是因为在清除时正在克隆吗?它不可能仅仅因为另一个线程向列表添加对象而发生,因为这种情况发生的速度非常高,并且空指针期望很少发生。

谢谢。

我正在考虑同步它,但宁愿不这样做并尝试捕获它

java clone synchronized
1个回答
0
投票

是的,这样做并不能保证 arraylist 处于可以在调用 clone() 方法时克隆它的状态。我不确定您希望在一个线程中克隆什么上下文,同时在另一个线程中添加和清除。可能有一种更简单的方法来完成您的任务,但如果没有更多上下文,我不确定。

© www.soinside.com 2019 - 2024. All rights reserved.