java.util.Hashset中的java.lang.ArrayStoreException

时间:2011-09-27 06:38:04

标签: java collections hashmap hashset

这是堆栈跟踪:

java.lang.ArrayStoreException
        at java.util.HashMap.transfer(Unknown Source)
        at java.util.HashMap.resize(Unknown Source)
        at java.util.HashMap.addEntry(Unknown Source)
        at java.util.HashMap.put(Unknown Source)
        at java.util.HashSet.add(Unknown Source)

一些观察结果:

  1. 这是一个间歇性的问题
  2. JDK 1.6
  3. CentOS 5.3
  4. 据我所知,这个错误是间歇性的,我怀疑只要HashSet(因此底层的HashMap)需要调整自身大小就会发生。但不确定为什么会这样ArrayStoreException。现在我想知道的是

    - 可能发生此错误的场景是什么?

1 个答案:

答案 0 :(得分:1)

我的猜测是您尝试同时从多个线程更新集合。 HashSetHashMap并非设计为线程安全的 - 如果您要从多个线程访问您的集合,则应使用同步来防止并发访问。

当然,这只是一个猜测 - 没有看到你的代码,我无法判断你是否使用多个线程。尽管如此......它还会伴随着间歇性的一面......