ConcurrentHashMap एक क्लास है जिसे jdk1.5 में पेश किया गया था। ConcurrentHashMap मैप में जोड़ते या अपडेट करते समय केवल बकेट लेवल पर लॉक लगाता है जिसे फ्रैगमेंट कहा जाता है। इसलिए, ConcurrentHashMap मैप पर समवर्ती पढ़ने और लिखने के ऑपरेशन की अनुमति देता है।
HashTable एक थ्रेड-सेफ लिगेसी क्लास है जिसे Jdk1.1 में पेश किया गया था। यह Map इंटरफेस का बेस कार्यान्वयन है। यह नल कीज़ और वैल्यूज़ की अनुमति नहीं देता। यह सिंक्रनाइज़्ड प्रकृति का है इसलिए दो अलग-अलग थ्रेड्स एक साथ एक्सेस नहीं कर सकते। Hashtable कोई क्रम बनाए नहीं रखता।
| क्र. सं. | मुख्य बिंदु | HashTable | ConcurrentHashMap |
|---|---|---|---|
| 1 | बेसिक | HashTable Jdk1.1 में पेश किया गया एक थ्रेड-सेफ लिगेसी क्लास है | ConcurrentHashMap jdk1.5 में पेश की गई एक क्लास है |
| 2 | लॉकिंग | यह पूरे कलेक्शन पर लॉक लगाता है | ConcurrentHashMap मैप में जोड़ते या अपडेट करते समय केवल बकेट लेवल पर लॉक लगाता है जिसे फ्रैगमेंट कहा जाता है |
| 3 | प्रदर्शन | यह ConcurrentHashMap से धीमा है | यह HashTable से बेहतर है |
| 4 | नल | यह नल की और वैल्यू की अनुमति नहीं देता | यह नल की और वैल्यू की अनुमति देता है |
Hashtable का उदाहरण
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class HashtableExample {
public static void main(String[] args) {
// Hashtable बनाएं
Hashtable map = new Hashtable();
map.put("HCL", "100");
map.put("DELL", "200");
map.put("IBM", "300");
// मैप प्रिंट करें
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
ConcurrentHashMap का उदाहरण
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapExample {
public static void main(String[] args) {
// ConcurrentHashMap
Map myMap = new ConcurrentHashMap();
myMap.put("HCL", "1");
myMap.put("DELL", "1");
// मैप प्रिंट करें
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}