java.util.concurrent.ConcurrentHashMap
is a part of the Java Concurrency package and is designed for highly concurrent applications. It is an advanced version of HashMap
that allows safe access and modification by multiple threads without the need for external synchronization.
Let’s consider a ConcurrentHashMap<String, Integer>
that stores the marks of 5 students:
-
Paani
,Mahesh
,Datta
,Ganesh
, andHarsha
.
We’ll use threads to update and read from this map concurrently.
import java.util.concurrent.ConcurrentHashMap; public class StudentMarksExample { public static void main(String[] args) { // Create ConcurrentHashMap ConcurrentHashMap<String, Integer> studentMarks = new ConcurrentHashMap<>(); // Add 5 students studentMarks.put("Paani", 85); studentMarks.put("Mahesh", 90); studentMarks.put("Datta", 88); studentMarks.put("Ganesh", 76); studentMarks.put("Harsha", 92); // Thread to update marks Thread updater = new Thread(() -> { System.out.println("Updater Thread started"); studentMarks.compute("Mahesh", (key, val) -> val + 5); studentMarks.compute("Datta", (key, val) -> val - 2); studentMarks.put("Ganesh", 80); // Overwrite value System.out.println("Updater Thread finished"); }); // Thread to read marks Thread reader = new Thread(() -> { System.out.println("Reader Thread started"); studentMarks.forEach((name, marks) -> { System.out.println(name + " scored: " + marks); }); System.out.println("Reader Thread finished"); }); // Start both threads updater.start(); reader.start(); // Wait for threads to finish try { updater.join(); reader.join(); } catch (InterruptedException e) { e.printStackTrace(); } // Final output System.out.println("\n Final Marks:"); studentMarks.forEach((name, marks) -> { System.out.println(name + " -> " + marks); }); } } /* D:\>javac StudentMarksExample.java D:\>java StudentMarksExample Reader Thread started Updater Thread started Updater Thread finished Ganesh scored: 76 Datta scored: 86 Mahesh scored: 95 Harsha scored: 92 Paani scored: 85 Reader Thread finished Final Marks: Ganesh -> 80 Datta -> 86 Mahesh -> 95 Harsha -> 92 Paani -> 85 */