Vector、HashTable、Stack是过时的集合,由于方法同步,写着不用了。同步有什么问题?如果是单线程环境,是否会以某种方式影响他们的工作?线程安全性很好。如果它们已过时,为什么要在并发包中创建同步集合?抱歉这个愚蠢的问题,非常有趣。提前致谢。
Vector、HashTable、Stack是过时的集合,由于方法同步,写着不用了。同步有什么问题?如果是单线程环境,是否会以某种方式影响他们的工作?线程安全性很好。如果它们已过时,为什么要在并发包中创建同步集合?抱歉这个愚蠢的问题,非常有趣。提前致谢。
线程安全不是免费的,或者说不是很免费,这就是为什么会有线程安全和非线程安全的集合。
这样的收集比非同步的收集要慢得多。
当不是整个集合都被每个喷嚏阻塞,而是只有一部分(块)时,新的同步集合使用更快的算法,因此 Vector、HashTable、Stack 不应该在多线程中使用(它们比新集合工作得慢),或者在单线程 - 它们只是多余的。
如果您有兴趣更详细地了解这些集合,建议您查看我的文章
PS原则上,如果性能对你来说不重要,那么使用 Vector、HashTable 等也不会发生什么可怕的事情。而不是 ArrayList、HashMap 等,它们会工作得很好。但它们的使用被认为是糟糕的代码,是语言能力差的标志。