第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可以在沒有迭代的情況下獲取、放置和刪除 HashMap 中的 elemetn

可以在沒有迭代的情況下獲取、放置和刪除 HashMap 中的 elemetn

江戶川亂折騰 2021-09-03 16:19:23
我有一個靜態(tài) hashMap,與多個線程共享。我根本沒有迭代地圖,而只是使用get, put, remove。安全ConcurrentModificationException嗎?該方法看起來像這樣private static Map<Long, Integer> TRACKER = new HashMap<Long,Integer>();public static void track(Long tid, boolean b) {        if (b) {            if (TRACKER.containsKey(tid)) {                TRACKER.put(tid, TRACKER.get(tid) + 1);            } else {                TRACKER.put(tid, 1);            }        } else {            Integer n = TRACKER.get(tid);            if (n != null) {                n = n -1;                if (n == 0) {                    TRACKER.remove(tid);                } else {                    TRACKER.put(tid, n);                }            }        }    }
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗 獲得超7個贊

安全ConcurrentModificationException嗎?

它是安全的ConcurrentModificationException。該異常僅由使用傳統(tǒng)迭代器或拆分器迭代(在某種意義上)地圖或其視圖之一的方法拋出。

但是,由于HashMap它不是線程安全的類,如果在沒有適當(dāng)外部外部同步的情況下從多個線程使用它,可能會發(fā)生不好的事情。這些包括(按不良程度增加的順序)

  1. size()報告錯誤值的方法。

  2. 條目神秘地暫時或永久消失。

  3. 可能的 NPE 和其他未經(jīng)檢查的異常。

  4. 由于多個線程在哈希鏈中創(chuàng)建循環(huán)的不幸操作序列,可能導(dǎo)致無限循環(huán)。

您的示例代碼不安全……但您不會得到“快速失敗” ConcurrentModificationException。相反,您可能會在難以重現(xiàn)的“隨機”時間出現(xiàn)莫名其妙的錯誤。


查看完整回答
反對 回復(fù) 2021-09-03
?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗 獲得超13個贊

如果多個線程在 a上執(zhí)行getput&remove操作HashMap,沒有適當(dāng)?shù)耐剑恍┎缓玫氖虑?,比?size() 報告丟失/丟失的條目,意外的 NPE ......甚至可能會發(fā)生無限循環(huán)。

HashMap文檔說 -

請注意,此實現(xiàn)不是同步的。如果多個線程并發(fā)訪問一個散列映射,并且至少有一個線程在結(jié)構(gòu)上修改了映射,則必須在外部進(jìn)行同步。(結(jié)構(gòu)修改是添加或刪除一個或多個映射的任何操作;僅更改與實例已包含的鍵關(guān)聯(lián)的值不是結(jié)構(gòu)修改。)...

謝謝斯蒂芬。


查看完整回答
反對 回復(fù) 2021-09-03
  • 2 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號