Wrappers和Concurrent集合之间的区别

时间:2013-10-16 16:48:40

标签: java collections

我们可以使用'collections.synchronizedCollection(Collection c)来同步集合 或'collections.synchronizedMap(Map c)',我们也可以使用像ConcurrentHashMap或ArrayQueue或BlockingQueue这样的Java并发API。

这两种获取同步集合的方式之间的同步级别是否存在差异,或者它们几乎相同?

任何人都可以解释一下吗?

2 个答案:

答案 0 :(得分:1)

是的:大规模并行处理时的速度。

这可以通过一种非常简单的方式来说明:想象一下,100个线程正在等待从集合中取出一些东西。

  • 同步方式:99将一个put置于睡眠状态,1个Thread获取其值。

  • 并发方式:100个线程立即获取其值,没有一个被置于保持状态。

现在第二种方法比简单的get需要更多的时间,但是只要像2个Threads这样的最小方法在不断的基础上使用它,由于并发而值得节省时间执行。

答案 1 :(得分:0)

所以现在根据我的理解,synchronized方式是一个包装器并阻塞整个集合对象,另一方面以并发方式只有集合内的对象得到同步,我们可以同时访问集合中的2个或更多元素