Java Threadlocal多線程應用場景學習

慕課網大神視頻https://www.imooc.com/video/21051

視頻學習後的總結: 

從應用場景思考Threadlocal實用價值

      1)場景1:海量請求下采用多線程處理,如何保持數據一致性的問題

            模擬1萬請求,100線程,如果採用同步(排隊),一定會宕機(絕對不可行)

            解決思路:海量同步——>Threadlocal+小範圍同步

            具體的:靈活使用Threadlocal,計算每個線程的結果,根據Threadlocal底層原理,會被保存到HashMap的結構中,每個線程的計算結果可以用HashSet收集,某個線程添加到HashSet時會發生線程不安全的問題,這裏需要進行小範圍的同步操作(由於是對所有Thread只進行一次操作,即海量同步變爲常數級同步,一般線程數量是有限的,所以不會影響性能)

      2)場景2:排隊操作中如果需要wait,思考應該如何處理

            解決思路:利用Threadlocal過濾大部分不需要wait的場景,例如可以過濾來自於同一線程的行爲

      3)場景3:同一線程的數據庫事務如何保證在同一個連接完成

            解決思路:利用Threadlocal保存每一個連接,當同一線程事務需要時,再從Threadlocal取出這個連接

      4)場景4:同一資源(訂單狀態、用戶信息...)放入同一個上下文中Context

            解決思路:利用Threadlocal保存,使用時取出

              

結束,詳解請看視頻吧

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章