我们可以使用'collections.synchronizedCollection(Collection c)来同步集合 或'collections.synchronizedMap(Map c)',我们也可以使用像ConcurrentHashMap或ArrayQueue或BlockingQueue这样的Java并发API。
这两种获取同步集合的方式之间的同步级别是否存在差异,或者它们几乎相同?
任何人都可以解释一下吗?
答案 0 :(得分:1)
是的:大规模并行处理时的速度。
这可以通过一种非常简单的方式来说明:想象一下,100个线程正在等待从集合中取出一些东西。
同步方式:99将一个put置于睡眠状态,1个Thread获取其值。
并发方式:100个线程立即获取其值,没有一个被置于保持状态。
现在第二种方法比简单的get需要更多的时间,但是只要像2个Threads这样的最小方法在不断的基础上使用它,由于并发>而值得节省时间执行。
答案 1 :(得分:0)
所以现在根据我的理解,synchronized方式是一个包装器并阻塞整个集合对象,另一方面以并发方式只有集合内的对象得到同步,我们可以同时访问集合中的2个或更多元素