有1個(gè)需求,比如有1列,存在數(shù)據(jù)庫(kù)里面,會(huì)被多個(gè)人并發(fā)的修改。我目前是直接加鎖,在鎖里面讀取這列的某一行,然后執(zhí)行修改的操作,再釋放鎖。但是這樣效率太低了,相當(dāng)于寫了一堆Sychnorized方法(或者表鎖),別人只能等待鎖釋放才能操作。但是,不同的人操作不同的行,應(yīng)該并行的進(jìn)行。請(qǐng)問有什么方式可以實(shí)現(xiàn)
2 回答

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
悲觀鎖,也就是有個(gè)人訪問這一行,別人訪問就會(huì)阻塞,具體去看LockMode這個(gè)類
樂觀鎖,大家同時(shí)可以訪問,最后只有一個(gè)人會(huì)成功,其他人可以通過反復(fù)重試事務(wù)來(lái)完成,這種一般是在表里加個(gè)字段version來(lái)實(shí)現(xiàn)

阿波羅的戰(zhàn)車
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
別考慮在JVM層面解決這個(gè)問題,因?yàn)樵诩涵h(huán)境下直接歇菜。
可以參考數(shù)據(jù)庫(kù)的樂觀鎖設(shè)計(jì),前面已經(jīng)講了
添加回答
舉報(bào)
0/150
提交
取消