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

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

為什么 hashmap 不是線程安全的?

為什么 hashmap 不是線程安全的?

狐的傳說(shuō) 2021-10-13 16:25:57
import java.util.HashMap;import java.util.Map;import java.util.concurrent.*;public class TestLock {    private static ExecutorService executor = Executors.newCachedThreadPool();    private static Map<Integer, Integer> map = new HashMap<>(1000000);    private static CountDownLatch doneSignal = new CountDownLatch(1000);    public static void main(String[] args) throws Exception {        for (int i = 0; i < 1000; i++) {            final int j = i;            executor.execute(new Runnable() {                @Override                public void run() {                    map.put(j, j);                    doneSignal.countDown();                }            });        }        doneSignal.await();        System.out.println("done,size:" + map.size());    }}有人說(shuō)并發(fā)時(shí)hashmap插入不安全。因?yàn)閔ashmap會(huì)進(jìn)行擴(kuò)容操作,但是我這里把size設(shè)置為1000000,只會(huì)擴(kuò)容到750000。我在這里做了 1000 次插入,所以我不會(huì)擴(kuò)展它。所以應(yīng)該沒(méi)有問(wèn)題。但是結(jié)果總是小于1000,哪里出錯(cuò)了?
查看完整描述

3 回答

?
ABOUTYOU

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

“因?yàn)?hashmap 會(huì)執(zhí)行擴(kuò)容操作”不僅HashMap是線程不安全的原因。

您必須參考 Java 內(nèi)存模型來(lái)了解它可以提供什么保證。

這種保證之一是可見(jiàn)性。這意味著除非滿足特定條件,否則在一個(gè)線程中所做的更改可能在其他線程中不可見(jiàn)。


查看完整回答
反對(duì) 回復(fù) 2021-10-13
?
青春有我

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

那么問(wèn)題標(biāo)題并沒(méi)有真正描述您的要求。無(wú)論如何,

在這里,您已將容量設(shè)置為 1000000。不是大小。

容量:最初在這個(gè)哈希圖中有多少個(gè)插槽?;旧鲜强詹宀?。

大?。旱貓D中填充的元素?cái)?shù)量。

因此,即使您將容量設(shè)置為 1000000,最終也沒(méi)有那么多元素。所以map中填充的元素個(gè)數(shù)會(huì)通過(guò).size()方法返回。它與并發(fā)問(wèn)題無(wú)關(guān)。是的,由于多種原因,HashMap 不是線程安全的。


查看完整回答
反對(duì) 回復(fù) 2021-10-13
  • 3 回答
  • 0 關(guān)注
  • 256 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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