ConcurrentHashMap in nutshell
The Java concurrent hash map may be considered as the lodge having many rooms with locking facility.Where as hash map may be considered as the house with one door.
So in case of hash map if you are locking the door. Then you will not be able to access if any of the room of house. Before using hash map every thread locks the hash map making it inaccessible to other thread till the time it won't complete it's operations.
So in case of hash map if you are locking the door. Then you will not be able to access if any of the room of house. Before using hash map every thread locks the hash map making it inaccessible to other thread till the time it won't complete it's operations.
Hashmap
But if concurrent hash map is viewed it may be viewed as multiple separate rooms of Lodge if any room is locked we can still access the other rooms.
Concurrent hashmap used by multiple thread
Creation of ConcurrentHashMap
HashMap anatomy:
Initial Capacity:
You can specify the size of the
concurrenthashmap at the time of creation.
Load Factor:
Tolerable capacity of concurrenthashmap if it exceeds concurrenthashmap needs to be resized. However
resizing operation is relatively slow.
ConcurrencyLevel:
Estimated number of concurrently updated
threads.
Advantages of concurrenthashmap:
ConcurrentHashMap can be used
to make the concurrent operations possible without waiting for other threads
job completion
Increased throughput.
For Producer Consumer Example
on concurrenthashmap Producer
Consumer in ConcurrentHashmap
Disadvantages of concurrency in hashmap
Methods including
size
, isEmpty
, and containsValue
are typically useful only when a map is not
undergoing concurrent updates in other threads. Otherwise these methods procure
precise results.When resizing is done?
1.
When the concurrenthashmap is almost full 75% of
its defined capacity.
2.
When collisions are increased so to avoid
collisions concurrenthashmap is resized.
Properties of ConcurrentHashmap
1.
ConcurrentHashmap does not allow null value.
2.
ConcurrentHashMap does not allow duplicate keys.
public class CHashMap {
public static void main(String[] args) {
ConcurrentHashMap<String, String> ch=new
ConcurrentHashMap<String, String>();
ch.put("a", "a");
ch.put("a", "a");
Enumeration<String> enum1=ch.keys();
while(enum1.hasMoreElements())
{
String key=enum1.nextElement();
System.out.println("Key is
==>"+key+" Value is
===>"+ch.get(key));
}
}
}
Output is: Key is ==>a Value
is ===>a
0 comments: