前集回顧
前面三篇文章我分別具體講了數據庫的悲觀鎖和樂觀鎖,還有redis的高性能緩存鎖,
這些都是分佈式場景最佳解決方案。這些鎖都不清楚的同學請先去我的文章裡學習下。
在回來看我們的synchronized。幾種鎖你都清楚了,面試或具體開發任務你都可以輕鬆面對。
背景
如某團購網APP會給你推薦非常多優惠券,這些優惠券類型來源各不相同,程序汪的我們肯定不會一個單線程查詢業務邏輯,這樣響應時間太慢體驗非常不友好。
解決思路
多線程調用相應業務處理
各種查詢業務需要利用synchronized添加數據
細節見代碼
原理
synchronized可以保證方法或者代碼塊在運行時,同一時刻只有一個方法可以進入到臨界區,同時它還可以保證共享變量的內存可見性
Java中每一個對象都可以作為鎖,這是synchronized實現同步的基礎:
普通同步方法,鎖是當前實例對象
靜態同步方法,鎖是當前類的class對象
同步方法塊,鎖是括號裡面的對象
下集預告
我在找找鎖的經典案例給大家,說到synchronized那多線程不的不說,高併發場景一般都是通過多線程手段來提高其系統性能
如果覺得對你有幫助請關注,有錯誤請指點,下篇繼續分析【多線程高併發經典案例應用舉例】
閱讀更多 程序汪汪 的文章