Heim > Java > javaLernprogramm > Analyse unsicherer Instanzen von Java HashMap

Analyse unsicherer Instanzen von Java HashMap

WBOY
Freigeben: 2023-05-25 21:46:04
nach vorne
876 Leute haben es durchsucht

Prinzipielle Analyse

1. In HashMap ist der put()-Methodenzeilencode modCount++ auf den ersten Blick threadunsicher.

2. Der Wert ist während des Erweiterungsprozesses nicht korrekt. Die Erweiterung von HashMap erstellt ein neues leeres Array und füllt die alten Elemente in das neue Array kann einen Nullwert erhalten.

Instanz

public class HashMapNotSafe {
 
    public static void main(String[] args) {
        final Map<Integer, String> map = new HashMap<>();
 
        final Integer targetKey = 65535; // 65 535
        final String targetValue = "v";
        map.put(targetKey, targetValue);
 
        new Thread(() -> {
            IntStream.range(0, targetKey).forEach(key -> map.put(key, "someValue"));
        }).start();
 
        while (true) {
            if (null == map.get(targetKey)) {
                throw new RuntimeException("HashMap is not thread safe.");
            }
        }
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAnalyse unsicherer Instanzen von Java HashMap. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage