在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 根據(jù)業(yè)務(wù)場景選擇合適的手段處理并發(fā)?

根據(jù)業(yè)務(wù)場景選擇合適的手段處理并發(fā)?

很多人沒有控制并發(fā)的意識(shí),即使意識(shí)到了,也不知道如何根據(jù)業(yè)務(wù)場景采取合適的手段控制并發(fā),是使用JPA中的樂觀鎖,還是使用數(shù)據(jù)庫的行級(jí)自旋鎖完成簡單并發(fā)控制,還是for update悲觀鎖,還是基于redis或zookeeper一類的分布式鎖?
比如我就是意思到了,但是知道如和處理并發(fā)的這類人,來位大佬指點(diǎn)一二。


例如:余額的操作。

public void reduce(String accountId,BigDecimal cost){
    Account account = accountService.findOne(accountId);
    BigDecimal balance = account.getBalance();
    if(balance > cost)
      balance = balance - cost;//用四則運(yùn)算代替BigDecimal的api,方便表達(dá)
    account.setBalance(balance);
    accountService.save(account);
}
回答
編輯回答
心沉

推薦使用樂觀鎖,JPA很好實(shí)現(xiàn),@Version

2018年2月10日 18:32
編輯回答
伐木累

阿里巴巴的Java開發(fā)手冊(cè),推薦用樂觀鎖,除非極高的并發(fā)導(dǎo)致重試率高于20%。

樂觀鎖的話,好像用JPA不太好實(shí)現(xiàn)哦,還是老老實(shí)實(shí)寫SQL語句吧。

2017年1月24日 22:00