視頻學習後的總結:
從應用場景思考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保存,使用時取出
結束,詳解請看視頻吧