鍍金池/ 問答/Java  網(wǎng)絡(luò)安全/ java service 加synchronized無效

java service 加synchronized無效

如題,我一個分布式的項目?,F(xiàn)在要做一個搶卡的功能。想用synchronized修飾一個方法,加鎖,但是結(jié)果不是樂觀

clipboard.png

clipboard.png

我從一個service調(diào)了另一個service的receiveVipCard()這個方法,一開始我會先判斷能不能領(lǐng)。
我的測試方法是:把一個卡的能被領(lǐng)取的數(shù)量變?yōu)?,然后2個手機(jī)一起搶,結(jié)果都搶到了(搶完后,我會把能領(lǐng)取卡的數(shù)量-1),但這個卡的能被領(lǐng)取的數(shù)量是0,也就是只減了一次,為什么呢?分布式不能這么加鎖嗎

回答
編輯回答
黑與白

==================================我的答案====================================
這個是分布式的事務(wù),用synchronized是不行的,得用分布式的鎖。主要有數(shù)據(jù)庫級別的,redis的和zookeeper的鎖。本次我用了redis來實現(xiàn)。

2018年7月30日 16:48
編輯回答
離殤

你得屬于數(shù)據(jù)庫事務(wù)

2017年8月21日 09:46