包装器和并发集合之间的区别



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

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

谁能解释一下?

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

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

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

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

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

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

最新更新