Collections.synchronizedCollection和Collections.synchronizedList或Collections.synchronizedSet之间有什么区别

时间:2014-02-13 22:49:36

标签: java collections

我们可以将Collections.synchronizedCollection(Collection c)用于Collection类型的所有对象,例如Set和List right,为什么我们有单独的方法,如Collections.synchronizedList或Collections.synchronizedSet。

3 个答案:

答案 0 :(得分:1)

除了CollectionList之外,还有Set个其他界面,例如Deque。您可以使用Collections#synchronizedCollection同步它。

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

答案 1 :(得分:1)

如果您在Collections.synchronizedCollection上致电List,则无法在返回的List上使用Collection方法。另一方面,您无法就可能是Collections.synchronizedList的任意内容致电Collection,包括Set

答案 2 :(得分:0)

是的,抛出ClassCastException,我查看了Collections类的源代码,方法Collections.synchronizedCollection(c)只返回包含类型的包装器同步方法,其中Collections.synchronizedList(list)方法有包装器List的所有方法的同步方法,类似于Set也。

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

感谢您的帮助。