C#.NET高級編程高并發必備技巧 - 多線程搶庫存時加鎖
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
前言鎖最為常見的應用就是高并發的情況下,庫存的控制。本次只做簡單的單機鎖介紹。 正文 直接看代碼 每請求一次庫存-1. 假如庫存1000,在1000個人請求之后,庫存將變為0
本次測試使用Jmeter進行測試。先初始化庫存為1000。 Jmeter 設置如下,一個線程請求1000次,再去查看庫存剛好為0,沒有任何問題: 調整一下測試參數,5個人同時請求,各請求200次。再去查看庫存 發現請求后,還有279的庫存。明明請求了1000次。但是還有279的庫存,明顯不對。 造成次問題的原因很簡單,就是在庫存還沒完全減的情況下,有另外一個、或多個線程同時發出了請求,而庫存只減少了1 只要還有庫存,就可以繼續請求,到了庫存完全為0的時候,已經超過1000個人進行了請求。與實際庫存不符合。 為了解決這個問題。我們簡單調整一下代碼:
聲明一個靜態變量,然后再方法體內 使用lock。調整代碼后,再次進行測試: 發現 請求1000次后,庫存為0。調整測試參數 100人*10次。測試結果依然為0。 到此為止,問題解決。 但是,實際應用場景中,高并發的應用,都會多機分布式部署。分布式部署要怎么解決?大家思考一下。
- EOF - 該文章在 2023/9/20 12:17:52 編輯過 |
關鍵字查詢
相關文章
正在查詢... |