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