java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

synchronized鎖

前集回顧

前面三篇文章我分別具體講了數據庫的悲觀鎖和樂觀鎖,還有redis的高性能緩存鎖,

這些都是分佈式場景最佳解決方案。這些鎖都不清楚的同學請先去我的文章裡學習下。

在回來看我們的synchronized。幾種鎖你都清楚了,面試或具體開發任務你都可以輕鬆面對。

背景

如某團購網APP會給你推薦非常多優惠券,這些優惠券類型來源各不相同,程序汪的我們肯定不會一個單線程查詢業務邏輯,這樣響應時間太慢體驗非常不友好。

解決思路

  1. 多線程調用相應業務處理

  2. 各種查詢業務需要利用synchronized添加數據

  3. 細節見代碼

java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

並行

java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

java鎖:synchronized高併發多線程最佳應用舉例「開發面試必備」

原理

synchronized可以保證方法或者代碼塊在運行時,同一時刻只有一個方法可以進入到臨界區,同時它還可以保證共享變量的內存可見性

Java中每一個對象都可以作為鎖,這是synchronized實現同步的基礎:

  1. 普通同步方法,鎖是當前實例對象

  2. 靜態同步方法,鎖是當前類的class對象

  3. 同步方法塊,鎖是括號裡面的對象

下集預告

我在找找鎖的經典案例給大家,說到synchronized那多線程不的不說,高併發場景一般都是通過多線程手段來提高其系統性能

如果覺得對你有幫助請關注,有錯誤請指點,下篇繼續分析【多線程高併發經典案例應用舉例】


分享到:


相關文章: