課程
/后端開發(fā)
/Java
/ThreadLocal
set.add(v)每個線程只是初始化的時候才會調(diào)用,調(diào)用的時候,誰搶占到set這個變量,添加值的時候,不都是值等于0的這個對象v嗎
2020-02-14
源自:ThreadLocal 2-5
正在回答
這個HashSet和HashMap的多線程調(diào)用時是一樣的風(fēng)險,在擴容時有可能導(dǎo)致死循環(huán),所以要用同步的容器或者同步代碼塊去調(diào)用“添加”的方法
我同意樓主的看法,加鎖與否不影響該問題的結(jié)果??赡芾蠋熛氡磉_的意思是,set作為臨界資源,加鎖更好,便于以后代碼的修改吧。
這里我測試不加鎖1000個線程跑100000也是正常的
多個線程初始化的時候會可能會產(chǎn)生多個線程同時調(diào)用set.add(v);? 對set有操作
舉報
設(shè)計者視角源碼級ThreadLocal分析教你建立線程安全感-你專屬的技術(shù)優(yōu)越感
1 回答請問addSet這個臨界區(qū)代碼不加鎖會出現(xiàn)什么問題那
2 回答將v值設(shè)置為0,又放到set中去,那么set中的值不都是0?
3 回答Integer為什么不是引用類型呢?
2 回答為什么threadLocalMap要設(shè)計為Static的雙層map,如果設(shè)計為非靜態(tài)的單層map有什么問題?
1 回答請問存this是什么意思呢?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2020-04-13
這個HashSet和HashMap的多線程調(diào)用時是一樣的風(fēng)險,在擴容時有可能導(dǎo)致死循環(huán),所以要用同步的容器或者同步代碼塊去調(diào)用“添加”的方法
2020-03-25
我同意樓主的看法,加鎖與否不影響該問題的結(jié)果??赡芾蠋熛氡磉_的意思是,set作為臨界資源,加鎖更好,便于以后代碼的修改吧。
2020-02-27
這里我測試不加鎖1000個線程跑100000也是正常的
2020-02-14
多個線程初始化的時候會可能會產(chǎn)生多個線程同時調(diào)用set.add(v);? 對set有操作