0

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

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

谁能解释一下?

4

2 回答 2

1

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

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

  • 同步方式:99 个线程进入睡眠状态,1 个线程获取其值。

  • 并发方式:100 个线程立即获得它们的值,没有一个被搁置。

现在第二种方法比简单的 get 花费更多的时间,但只要至少有 2 个线程在持续使用它,由于并发执行,您节省的时间是非常值得的。

于 2013-10-16T17:10:35.967 回答
0

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

于 2013-10-16T17:31:31.067 回答