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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在多線程環(huán)境中將 HashSet 用作非常簡(jiǎn)單的緩存是否安全?

在多線程環(huán)境中將 HashSet 用作非常簡(jiǎn)單的緩存是否安全?

眼眸繁星 2022-12-21 10:10:49
我意識(shí)到對(duì)此有類似的問題/答案,但我似乎無法找到我正在尋找的東西。我正在尋求實(shí)現(xiàn)一個(gè)內(nèi)存緩存,它緩存對(duì)正在執(zhí)行存在性檢查的數(shù)據(jù)庫的調(diào)用結(jié)果。這種存在性檢查非常昂貴,一旦對(duì)象存在于數(shù)據(jù)庫中,它就永遠(yuǎn)不會(huì)被刪除,所以我只需要一個(gè)非常簡(jiǎn)單的內(nèi)存緩存(甚至是進(jìn)程內(nèi)緩存)。一旦進(jìn)行了數(shù)據(jù)庫調(diào)用,進(jìn)程就會(huì)記住該 ID 存在性檢查的結(jié)果,并且不應(yīng)再次調(diào)用數(shù)據(jù)庫。(也許要提到的另一件事是,如果數(shù)據(jù)庫中不存在該對(duì)象,它將被創(chuàng)建)。我正在為此使用 HashSet (java),并在檢查/創(chuàng)建完成后將 ID 添加到集合中,但這是一個(gè)高度并發(fā)的環(huán)境,我不確定 HashSet 缺乏線程安全性的影響。該代碼僅使用 add() 和 contains() 方法(無迭代)。我真的不關(guān)心這里和那里的緩存未命中(以及由此產(chǎn)生的額外數(shù)據(jù)庫調(diào)用),但我想知道的是,在并發(fā)線程中調(diào)用 add() 和 contains() 的這種模式是否會(huì)導(dǎo)致到更災(zāi)難性的錯(cuò)誤。
查看完整描述

2 回答

?
瀟湘沐

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

您可以使用 ConcurrentHashMap 進(jìn)行多線程訪問和寫入操作。如果只需要 HashSet,可以從 ConcurrentHashMap 派生 ConcurrentHashSet。你可以這樣使用。

Set<String> myConcurrentSet = ConcurrentHashMap.newKeySet();


查看完整回答
反對(duì) 回復(fù) 2022-12-21
?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

否。如果您想Map在多線程環(huán)境中使用 a,請(qǐng)使用Collections.synchronizedMap(<map object>)or ConcurrentHashMap.newKeySet();

Set<String> concurrentSet = Collections.synchronizedSet(new HashSet<>());

要么...

Set<String> concurrentSet = ConcurrentHashMap.newKeySet();


查看完整回答
反對(duì) 回復(fù) 2022-12-21
  • 2 回答
  • 0 關(guān)注
  • 164 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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