JavaGian java tutorial and java interview question and answer

JavaGian , Free Online Tutorials, JavaGian provides tutorials and interview questions of all technology like java tutorial, android, java frameworks, javascript, ajax, core java, sql, python, php, c language etc. for beginners and professionals.

Difference between HashMap and ConcurrentHashMap in Java Collection

Difference between HashMap and ConcurrentHashMap in Java


In this section, we will see some more details about HashMap and ConcurrentHashMap and compare them on various parameters like thread-safety, synchronization, performance, ease of use etc.



1)  The significant difference between HashMap and ConcurrentHashMap is that later is thread-safe and can be used in a concurrent environment without external synchronization. Though it doesn't provide the same level of synchronization as achieved by using Hashtable but it's enough for the most practical purpose.

2)You can make HashMap synchronized by wrapping it on Collections.synchornizedMap(HashMap) which will return a collection which is almost equivalent to Hashtable, where every modification operation on Map is locked on Map object while in case of ConcurrentHashMap, thread-safety is achieved by dividing the whole Map into different partition based upon Concurrency level and only locking particular portion instead of locking the whole Map.

Difference between ConcurrentHashMap and HashMap in Java Collection3) ConcurrentHashMap is more scalable and performs better than Synchronized HashMap in the multi-threaded environment while in the Single threaded environment both HashMap and ConcurrentHashMap gives comparable performance, where HashMap only slightly better.


In Summary Main difference between ConcurrentHashMap and HashMap in Java Collection turns out to be thread-safety, Scalability, and Synchronization. ConcurrentHashMap is a better choice than synchronized HashMap if you are using them as cache, which is the most popular use case of a Map in Java application. ConcurrentHashMap is more scalable and outperforms when a number of reader threads outnumber the number of writer threads.


The main difference between concurrent hashmap and hashtable is, a concurrent hashmap is not advisable to use when no of write operations is more than reading, because it locks puts lock only in affected code, not in the entire block. so suppose u have 2 thread one is updating the map and another one is reading so sometimes u might get null even first thread has updated the map because of partial lock

ConcurrentHashMap is better than HashTable because at the time of iteration it locks only particular iteration and rest iterations are free for other threads.


Performance wise ConcurrentHashMap is better because it prevents the concurrent modification error on multithreaded Java programming.


.