How to synchronize HashMap in Java with example

HashMap is a non-synchronized collection class. If we need to perform thread-safe operations on it then we must need to synchronize it explicitly. In this tutorial we will see how to synchronize HashMap.


In this example we have a HashMap<Integer, String> it is having integer keys and String type values. In order to synchronize it we are using Collections.synchronizedMap(hashmap)  it returns a thread-safe map backed up by the specified HashMap.

Important point to note in the below example:
Iterator should be used in a synchronized block even if we have synchronized the HashMap explicitly (As we did in the below code).


Map map = Collections.synchronizedMap(new HashMap());
//This doesn't need to be in synchronized block
Set set = map.keySet();
// Synchronizing on map, not on set
synchronized (map) {  
      // Iterator must be in synchronized block
      Iterator iterator = set.iterator(); 
      while (iterator.hasNext()){

Complete Code:

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Iterator;
public class HashMapSyncExample {
    public static void main(String args[]) {
         HashMap<Integer, String> hmap= new HashMap<Integer, String>();
         hmap.put(2, "Anil");
         hmap.put(44, "Ajit");
         hmap.put(1, "Brad");
         hmap.put(4, "Sachin");
         hmap.put(88, "XYZ");

         Map map= Collections.synchronizedMap(hmap);
         Set set = map.entrySet();
             Iterator i = set.iterator();
             // Display elements
             while(i.hasNext()) {
                Map.Entry me = (Map.Entry);
                System.out.print(me.getKey() + ": ");


1: Brad
2: Anil
4: Sachin
88: XYZ
44: Ajit

2 comments… add one

  • munni July 2, 2014, 1:07 PM

    What’s the use of synchronizing hashmap?
    As sync says only one at a time — which part of example says that only one is getting accessed?
    Basically i wanted to know the difference b/w sync and non sync hashmap using multi threaded example and basically showing the difference

    It would be great it u cud clarify my questions.

  • Chinmayee Das April 3, 2015, 11:38 AM


    In the above program, how the output came, i am not getting, in which way, its printing the result?? can u please brief about this..



Leave a Comment