您好,登錄后才能下訂單哦!
本篇內容主要講解“java HashMap的不安全實例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java HashMap的不安全實例分析”吧!
原理分析
1、在HashMap中,put()方法行代碼modCount++,這個代碼一看就是線程不安全。
2、在擴展過程中取值不準確,HashMap的擴展將創建一個新空數組,并將舊的項目填入新的數組,如果此時去取值,則可以獲得null值。
實例
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."); } } } }
到此,相信大家對“java HashMap的不安全實例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。