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

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

我的代碼是線程安全的嗎?如果沒有,如何實現(xiàn)線程安全?

我的代碼是線程安全的嗎?如果沒有,如何實現(xiàn)線程安全?

不負(fù)相思意 2022-10-20 16:56:24
我在一次采訪中被問到一個問題。如果我想像這樣在地圖中存儲值該怎么辦:key_1 --> value 1key_2 --> value 2key_1 --> value 3在這里,如果我們假設(shè)鍵和值都在字符串中,那么我們應(yīng)該像這樣使用映射..Map<String,List<String>> m1 = new HashMap();然后有人問我如果要實現(xiàn)線程安全怎么辦?然后我說我們可以為此目的使用ConcurrentHashMap ..他們說好的..然后他們問值我的意思是 List 是線程安全的嗎?前任。t1.get("key_1").put("value_4");    t2.get("key_1").put("value_5");在這里,假設(shè)線程 t1 和 t2 都在并行運行。那么,如果List<String>我的意思是ConcurrentHashMap中的值是線程安全的?如果是,那怎么辦?如果沒有,那么如何實現(xiàn)呢?
查看完整描述

2 回答

?
肥皂起泡泡

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

ConcurrentHashMap是線程安全的數(shù)據(jù)結(jié)構(gòu)。如果您List<String>在值中使用(不是線程安全的),ConcurrentHashMapList不是線程安全的,因為兩個線程可以保護(hù)列表的引用,然后并行修改它。

ConcurrentHashMap是線程安全的意味著它的操作putputAll等是線程安全的。這并不意味著您用作其值的數(shù)據(jù)結(jié)構(gòu)也成為線程安全的。

如何做到這一點?

  • 在你List<String>的.CopyOnWriteArrayListConcurrentHashMap

  • 進(jìn)行自定義List并制作他們的所有方法Synchronized。

  • 通過傳入將非線程安全轉(zhuǎn)換List為線程安全。ListCollections.synchronizedList(non-Thread safelist)


查看完整回答
反對 回復(fù) 2022-10-20
?
呼如林

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

我說我們可以為此目的使用 ConcurrentHashMap ..他們說好的..

也許沒關(guān)系,也許不行。這取決于key_1和key_2之間是否有特殊關(guān)系。

假設(shè)一個線程為 key_1 存儲了一個新值,然后就在它可以為 key_2 存儲相關(guān)值之前,它的時間片結(jié)束。然后另一個線程在第一個線程掛起時檢查 key_1 和 key_2 的值。它看到 key_1 的新值,但看到 key_2 的值。

在那一點上,第一個線程只完成了更新兩個鍵的一半是否重要?

插入 aConcurrentHashMap將確保 map 數(shù)據(jù)結(jié)構(gòu)本身在多線程應(yīng)用程序中不會做任何有趣或錯誤的事情,但如果應(yīng)用程序依賴于這兩個鍵總是一起更新,那么你仍然需要某種顯式鎖定以確保它們始終一起更新。


查看完整回答
反對 回復(fù) 2022-10-20
  • 2 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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