首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Collections.synchronizedCollection与Collections.synchronizedList或Collections.synchronizedSet有什么不同

Collections.synchronizedCollection与Collections.synchronizedList或Collections.synchronizedSet有什么不同
EN

Stack Overflow用户
提问于 2014-02-14 06:49:36
回答 3查看 663关注 0票数 0

我们可以对像Set和List right这样的集合类型的所有对象使用Collections.synchronizedCollection(集合c),这就是为什么我们有像- Collections.synchronizedList或Collections.synchronizedSet这样的单独方法。

EN

回答 3

Stack Overflow用户

发布于 2014-02-14 06:51:47

除了ListSet之外,还有其他的Collection接口,例如Deque。您可以使用Collections#synchronizedCollection进行同步。

无论如何,如果您碰巧使用同步集合,请查看java.util.concurrent包中的类。其中一些是CopyOnWriteArrayList (用于List)和CopyOnWriteArraySet (用于Set)。

票数 1
EN

Stack Overflow用户

发布于 2014-02-14 06:52:19

如果对List调用Collections.synchronizedCollection,则不能对返回的Collection使用List方法。另一方面,您不能对可能是任意Collection的东西调用Collections.synchronizedList,包括Set

票数 1
EN

Stack Overflow用户

发布于 2014-02-15 03:58:00

是的,它抛出了ClassCastException,我查看了Collections类的源代码,方法Collections.synchronizedCollection(c)只返回集合类型的包装器同步方法,而Collections.synchronizedList( List )方法具有列表中所有方法的包装器同步方法,Set也是类似的。

因此,对于特定的输入类型,必须在集合中使用特定的同步方法。

谢谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21767251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档