java - 为什么ArrayList、HashMap等类没有同步?

标签 java arraylist synchronization hashmap

我正在更新一个旧项目,我想知道是否应该删除 IDE 中标记为“过时”的一些对象。有问题的对象是 Vector 和 Hashtable。我做了一些研究,似乎这些对象的较新对应物 - ArrayList 和 HashMap - 基本相同,只是没有同步。

我的问题是,我为什么要进行转换?难道我只是从我的应用程序中拿走了一点安全性来换取少量的速度吗?无论哪种方式,这似乎都不是一个具有里程碑意义的决定,但我想在做出决定之前看看是否值得花时间。

谢谢!

最佳答案

Aren't I just taking away a bit of security from my application in exchange for a small amount of speed?

如果您唯一的线程安全性依赖于 VectorHashtable 的同步,那么您几乎肯定有麻烦了。

通常,粗粒度的操作需要同步——“同步集合上的每个小操作并希望它足够好”的方法几乎从来都不是必需的,那么为什么要接受它呢?

如果您在线程之间共享可变数据(例如集合),您需要仔细考虑如何这样做 - 使用 VectorHashtable 可以给您一个虚假的安全感。

关于java - 为什么ArrayList、HashMap等类没有同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125494/

相关文章:

java - maven2 中的替代插件执行?

java - 比较两个 ArrayList 中的共同项并从其中一个 ArrayList 中删除这些项

java - 如何将 ActionListener 添加到 ArrayList 中的按钮?

java - Gradle 项目同步失败 Android Studio 3.0 (JDK 9.0.1)

synchronization - NTP 往返延迟

concurrency - 如何理解自旋锁的这些实现?

java - 根据操作结果有条件地更改struts2表单的 'targets'属性

java.lang.ClassNotFoundException : org. springframework.web.servlet.DispatcherServlet 谷歌应用引擎

java - Java 中的 REST Get 调用用于分页

java - 试图在 ArrayList<Float> 中找到最大元素,在 Java 中