java陷阱之不可忽視的併發操作

業務需求.商家針對採購需求發貨生成供貨單

代碼邏輯:

           1.開啓事物

           2.根據採購需求查詢所屬供貨單已發貨數量

           3.根據採購需求採購數量>已發貨才允許供貨單

           4.滿足2條件插入發貨指定發貨數量的供貨單

           5.commit事物

錯誤思維 商家一個一個進行發貨。不存在併發。就不考慮原子性。

出現問題:

           1.數據庫因爲高峯期 峯值上去 商家發貨 1、3、4因爲數據庫高峯期sql阻塞。

           2.前端沒有做重複提交。或者因爲超時異常取消重複提交按鈕。

           3.商家再次進行發貨。導致重複發貨

解決方式:

            1.不應該基於人的覺得來考慮併發

            2.雖然有的是單個人操作。但是保證原子性的地方都需要加鎖

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