課程
/后端開發(fā)
/Java
/ThreadLocal
原來是把a(bǔ)++這個操作同步起來
現(xiàn)在這個操作,好像也沒有簡化很多。
這個思路還是沒太明白。
2020-02-07
源自:ThreadLocal 2-5
正在回答
鎖發(fā)生在寄存器里是很快的,鎖發(fā)生在內(nèi)存里要看(如果發(fā)生在CPU的L1 cache上,就很快),如果發(fā)生在L2,L3或者內(nèi)存里就慢很多;鎖如果發(fā)生在IO上(比如讀硬盤就非常慢)。所以縮小范圍,要看縮小了什么,如果縮小了I/O,那就非常有必要了。 我用Sleep(I/O),所謂I/O就是觸發(fā)中斷的東西,來替代真實(shí)的I/O場景(比如讀數(shù)據(jù)庫,讀redis等)。
寄存器速度約等于(l1),< l2, < l3? <<<<< 內(nèi)存(這里大概有幾十倍到百倍速度差距了) <<<<<<? 固態(tài)硬盤(和內(nèi)存間有百倍到千倍差距) <<<<<< 機(jī)械硬盤(和內(nèi)存比大概有十萬到百萬倍差距)。。
阿里大神的思考,值得學(xué)習(xí)
原來的a是臨界資源,所有的線程都要去爭奪臨界資源,就會發(fā)生排隊。用了ThreadLocal之后每個線程都有一份線程本地資源,避免了多線程的排隊競爭
匪曰思存 提問者
原先是只要有線程并發(fā)就排隊,現(xiàn)在是不同線程間通過ThreadLocal進(jìn)行資源隔離,就無須排隊了,因?yàn)楦井a(chǎn)生不了競爭,唯一的競爭就在那個共享的HashSet上,所以給add()操作同步一下就好了??s小了原來的同步范圍
舉報
設(shè)計者視角源碼級ThreadLocal分析教你建立線程安全感-你專屬的技術(shù)優(yōu)越感
1 回答為啥兩個Initial Value run ...在一起,1,13在一起?不是分開調(diào)用的嗎?啥原理呢
2 回答為什么MyThreadLocal里面HashMap里面再嵌套一個HashMap呢
4 回答20行為什么會有線程安全問題
4 回答請問為什么不能直接使用一個Thread和Value綁定的Map?
1 回答請問老師是否有其他更加系統(tǒng)全面的教程
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2020-02-21
鎖發(fā)生在寄存器里是很快的,鎖發(fā)生在內(nèi)存里要看(如果發(fā)生在CPU的L1 cache上,就很快),如果發(fā)生在L2,L3或者內(nèi)存里就慢很多;鎖如果發(fā)生在IO上(比如讀硬盤就非常慢)。所以縮小范圍,要看縮小了什么,如果縮小了I/O,那就非常有必要了。 我用Sleep(I/O),所謂I/O就是觸發(fā)中斷的東西,來替代真實(shí)的I/O場景(比如讀數(shù)據(jù)庫,讀redis等)。
寄存器速度約等于(l1),< l2, < l3? <<<<< 內(nèi)存(這里大概有幾十倍到百倍速度差距了) <<<<<<? 固態(tài)硬盤(和內(nèi)存間有百倍到千倍差距) <<<<<< 機(jī)械硬盤(和內(nèi)存比大概有十萬到百萬倍差距)。。
2020-03-17
阿里大神的思考,值得學(xué)習(xí)
2020-02-26
原來的a是臨界資源,所有的線程都要去爭奪臨界資源,就會發(fā)生排隊。用了ThreadLocal之后每個線程都有一份線程本地資源,避免了多線程的排隊競爭
2020-02-08
原先是只要有線程并發(fā)就排隊,現(xiàn)在是不同線程間通過ThreadLocal進(jìn)行資源隔離,就無須排隊了,因?yàn)楦井a(chǎn)生不了競爭,唯一的競爭就在那個共享的HashSet上,所以給add()操作同步一下就好了??s小了原來的同步范圍