का उपयोग आप कहते हैं कि कैश है केवल पढ़ने के लिए, लेकिन यह भी एक अंतराल जो विरोधाभासी लगता है पर अद्यतन किया जा रहा।
यदि पूरे कैश को अंतराल पर अपडेट किया जाता है, तो मैं अस्थिरता का उपयोग करता रहूंगा। अस्थिर सुनिश्चित करेगा कि अद्यतन नक्शा सुरक्षित रूप से प्रकाशित है।
public final class Cache
{
private volatile Map<?,?> cache;
private void mapUpdate() {
Map<?,?> newCache = new HashMap<>();
// populate the map
// update the reference with an immutable collection
cache = Collections.unmodifiableMap(newCache);
}
}
अंतराल अद्यतन एक ही कैश को संशोधित किया गया है, तो आप शायद एक ConcurrentHashMap उपयोग करने के लिए, या नक्शे की प्रतिलिपि, प्रतिलिपि को अपडेट, और संदर्भ को अद्यतन करना चाहते हैं।
public final class Cache
{
private volatile Map<?,?> cache;
private void mapUpdate() {
Map<?,?> newCache = new HashMap<>(cache);
// update the map
// update the reference with an immutable collection
cache = Collections.unmodifiableMap(newCache);
}
}
स्रोत
2012-04-27 21:22:22
यदि यह केवल पढ़ने के लिए आपको चाहिए ... न तो। 'हैश मैप' पर –
'अस्थिर' का अर्थ है कि जब आप 'हैश मैप' ऑब्जेक्ट प्राप्त करते/सेट करते हैं तो आप मेमोरी बाधा पार करते हैं। जब आप मानचित्र से चीजों को जोड़ते या हटाते हैं तो यह कुछ भी नहीं करता है – Gray
@BrianRoach आप क्या उपयोग करेंगे? – DarthVader