代码之家  ›  专栏  ›  技术社区  ›  KayV

拆分器:线程是否安全?

  •  3
  • KayV  · 技术社区  · 8 年前

    但是,在其进一步的文件中,该文件与上述声明相矛盾:

    源管理并发修改。 例如,java.util.concurrent的键集。ConcurrentHashMap是一个并发源。从源创建的拆分器报告并发的特征。

    1 回复  |  直到 5 年前
        1
  •  7
  •   Holger    8 年前

    不,a Spliterator 报告 CONCURRENT 特征将具有线程安全性 来源 ,这意味着即使源代码被并发修改,它也可以安全地对其进行迭代。但是 分离器 其本身可能仍然具有不能同时操纵的状态。

    请注意,您的引用源于对如何管理源的结构干扰的描述,而不是一般的拆分器行为。

    documentation of the CONCURRENT characteristic itself :

    特征值,表示元素源可以由多个线程安全地同时修改(允许添加、替换和/或删除),而无需外部同步。如果是这样,则拆分器应该有一个关于遍历期间修改影响的文档化策略。

    因此,这些特征的后果是惊人的小。A. 报告 同时发生的 IMMUTABLE 永远不会扔 ConcurrentModificationException Stream 流动 API从不执行任何源操作,事实上,它实际上并不知道源(除了通过 分离器