gpt4 book ai didi

java - 为什么在 Java 的新 Collection 库中牺牲了线程安全?

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:06 24 4
gpt4 key购买 nike

在 Java 的新 Collections 库中是否还有性能以外的原因牺牲线程安全?

最佳答案

性能是主要原因。

但是,还有一个重要的哲学/设计原因:您不能仅通过使单个集合类线程安全来实现完整的线程安全。

安全的并发代码通常需要不同级别的同步,例如:

  • 在更高级别 - 同时锁定两个集合,以便您可以从一个集合中删除一个元素并将其添加到另一个)
  • 在较低级别 - 锁定并发数据表中的各个项目行

所以在某种程度上,使集合类同步将是一个相当随意的决定,不适合许多(如果不是大多数)情况。因此,让集合不安全并让用户决定他们的并发策略(是否需要、适当的粒度级别、事务处理方法等)是一个更好的选择。

除此之外,另一种选择是采用 Clojure 开创的方法并使用不可变的持久集合类,这样您就根本不必担心锁或线程安全。但这需要对您的状态方法进行更全面的重新思考……

关于java - 为什么在 Java 的新 Collection 库中牺牲了线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13190717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com