我正在更新一个旧项目,我想知道是否应该删除 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?
如果您唯一的线程安全性依赖于 Vector
和 Hashtable
的同步,那么您几乎肯定有麻烦了。
通常,粗粒度的操作需要同步——“同步集合上的每个小操作并希望它足够好”的方法几乎从来都不是必需的,那么为什么要接受它呢?
如果您在线程之间共享可变数据(例如集合),您需要仔细考虑如何这样做 - 使用 Vector
和 Hashtable
可以给您一个虚假的安全感。
关于java - 为什么ArrayList、HashMap等类没有同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125494/