栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Java Vector(和Stack)类被视为过时或过时的?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Java Vector(和Stack)类被视为过时或过时的?

Vector在每个单独的操作上同步。那几乎从来不是你想要做的。

通常,你要同步整个操作序列。同步单个操作既不安全(Vector例如,如果你对进行迭代,则仍然需要锁,以避免其他人同时更改集合,这会导致

ConcurrentModificationException
迭代线程中的错误),但同步速度也较慢(为什么一次就够了就反复拿出锁)?

当然,即使你不需要时,它也具有锁定的开销。

基本上,在大多数情况下,这是一种非常有缺陷的同步方法。正如Brian Henk先生所指出的那样,你可以使用以下调用来装饰集合:

[Collections.synchronizedList](http://java.sun.com/javase/6/docs/api/java/util/Collections.html#synchronizedList(java.util.List))- Vector
将“调整大小的数组”集合实现与“同步每个操作”位结合在一起的事实是不良设计的另一个例子;装饰方法使关注点更清晰地分离。

至于Stack等效项-我会先看Deque/ ArrayDeque。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368689.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号