The main difference between these two is that ConcurrentHashMap
will lock only portion of the data which are being updated while other portion
of data can be accessed by other threads. However,
Collections.synchronizedMap() will lock all the data while updating, other
threads can only access the data when the lock is released. If there are many
update operations and relative small amount of read operations, you should
choose ConcurrentHashMap.
Note: Collections.synchronizedMap(HashMap) is equals to Hashtable
Also one other difference is that
ConcurrentHashMap will not preserve the order of elements in the Map passed in.
It is similar to HashMap when storing data. There is no guarantee that the
element order is preserved. While Collections.synchronizedMap(0 will preserve
the elements order of the Map passed in. For example, if you pass a TreeMap to
ConcurrentHashMap, the elements order in the ConcurrentHashMap may not be the
same as the order in the TreeMap, but Collections.synchronizedMap() will
preserve the order.
Note: Collections.synchronizedMap(HashMap) is equals to Hashtable
No comments:
Post a Comment