Collections  classes are heart of java API though I feel using them judiciously is  an art. Its my personal experience where I have improved performance by  using ArrayList where legacy codes are unnecessarily used Vector etc. 
JDK 1.5 introduces some good concurrent collections  which is highly efficient for high volume, low latency system  electronic trading systems In general those are backbone for Concurrent  fast access of stored data. In this tutorial we will look on  ConcurrentHashMap, Hashtable and HashMap and Collections.synchronizedMap  and see difference between ConcurrentHashMap and Hashtable and synchronizedMap.
This Java Collection tutorial is in continuation of my article How HashMap works in Java  and difference between HashMap and Hashtable in Java   if you haven’t read already you may find some useful information based on my experience in Java Collections.
Why we need ConcurrentHashMap and CopyOnWriteArrayList
The synchronized collections classes, Hashtable and Vector, and the synchronized wrapper classes, Collections.synchronizedMap and Collections.synchronizedList,  provide a basic conditionally thread-safe implementation of Map and  List. However, several factors make them unsuitable for use in highly  concurrent applications  for example their single  collection-wide lock is an impediment to scalability and it often  becomes necessary to lock a collection for a considerable time during  iteration to prevent ConcurrentModificationException.
ConcurrentHashMap  and CopyOnWriteArrayList implementations provide much higher  concurrency while preserving thread safety, with some minor compromises  in their promises to callers. ConcurrentHashMap and CopyOnWriteArrayList  are not necessarily useful everywhere you might use HashMap or  ArrayList, but are designed to optimize specific common situations. Many  concurrent applications will benefit from their use. 
Difference between ConcurrentHashMap and Hashtable
So what is the difference between Hashtable and ConcurrentHashMap , both can be used in multithreaded environment but once the size of Hashtable becomes considerable large performance degrade because for iteration it has to be locked for longer duration.
Since ConcurrentHashMap introduced concept of segmentation  , how large it becomes only certain part of it get locked to provide  thread safety so many other readers can still access map without waiting  for iteration to complete. 
In Summary ConcurrentHashMap only locked certain portion of Map while Hashtable lock full map while doing iteration. 
Difference between ConcurrentHashMap and Collections.synchronizedMap
ConcurrentHashMap  is designed for concurrency and improve performance while HashMap which  is non synchronized by nature can be synchronized by applying a wrapper  using Collections.synchronizedMap. Here are some of common differences between ConcurrentHashMap and Collections.synchronizedMap
ConcurrentHashMap do not allow null keys or null values while HashMap allows null keys.

0 Response to "Difference between ConcurrentHashMap and Collections.synchronizedMap and Hashtable in Java"
Posting Komentar