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
*/
