大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 樂觀鎖的實現(xiàn)

樂觀鎖的實現(xiàn)

更新時間:2022-09-27 10:02:33 來源:動力節(jié)點 瀏覽1865次

線程鎖分類有很多種,樂觀鎖是其中之一。樂觀鎖的實現(xiàn)是通過數(shù)據(jù)版本(Version)記錄機制實現(xiàn)的,是樂觀鎖最常用的實現(xiàn)方式。什么是數(shù)據(jù)版本?即為數(shù)據(jù)添加版本標(biāo)識,一般是通過在數(shù)據(jù)庫中添加數(shù)字“版本”字段來實現(xiàn)的桌子。讀取數(shù)據(jù)時,將version字段的值一起讀取,每次更新數(shù)據(jù)時version值加一。當(dāng)我們提交更新時,我們判斷數(shù)據(jù)庫表中對應(yīng)記錄的當(dāng)前版本信息與第一次檢索到的版本值進(jìn)行比較。如果數(shù)據(jù)庫表的當(dāng)前版本號等于第一次檢索到的版本值,則更新它。否則視為過期數(shù)據(jù)。

1.數(shù)據(jù)庫表設(shè)計

任務(wù)

共有三個字段,分別是id、value、version

2.實現(xiàn)

(1)首先讀取task表中的數(shù)據(jù)(實際上這個表只有一條記錄),得到version的值為versionValue

(2)每次更新任務(wù)表中的value字段,為了防止沖突,需要這樣做

更新任務(wù)集 value = newValue,version = versionValue + 1

其中 version = versionValue;

只有當(dāng)這條語句執(zhí)行時,才表示value字段的值更新成功

例如,如果有兩個節(jié)點 A 和 B 更新任務(wù)表中的 value 字段值,大約同時,節(jié)點 A 和節(jié)點 B 從任務(wù)表中讀取的版本值是 2,那么節(jié)點 A 和節(jié)點B 正在更新 value 字段值時,更新任務(wù)集 value = newValue, version = 3 where version = 2;,其實只有 1 個節(jié)點執(zhí)行 SQL 語句成功,假設(shè) A 節(jié)點執(zhí)行成功,那么 version 字段此時任務(wù)表的值為3,然后B節(jié)點操作update task set value = newValue, version = 3 where version = 2; 不執(zhí)行這條SQL語句,這樣更新任務(wù)表時不會發(fā)生沖突。

3.項目中的用例

     /**
     	 * 基于樂觀鎖的更新操作
     	 * @param editFinance 編輯的賬戶對象
     	 * @param queryLockNo 上一次查詢的樂觀鎖版本號
     	 * @return    
     	 */
     @覆蓋
     公共 int  updateForLockNo (BzFinanceEntity editFinance, int queryLockNo)  {
     		editFinance.setLockNo(queryLockNo +
     1 ); 
     //修改樂觀鎖版本
     		BzFinanceEntityExample 示例 =
     新BzFinanceEntityExample();
     		BzFinanceEntityExample.Criteria 標(biāo)準(zhǔn) = example.createCriteria();
     		criteria.andIdFinanceEqualTo(editFinance.getIdFinance());
     		criteria.andLockNoEqualTo(queryLockNo);
     //基于樂觀鎖,修改查詢版本的數(shù)據(jù)	
     //根據(jù)Example條件更新不為null的實體BzFinanceEntity的屬性值	
     int mark = 
      this .baseEntityDao.updateByExampleSelective(editFinance, example);		
     返回標(biāo)記;
     	}  

以上就是關(guān)于“樂觀鎖的實現(xiàn)”的介紹,在本站多線程教程中還有更豐富的知識等著大家去學(xué)習(xí),這是掌握多線程線程鎖種類的必學(xué)內(nèi)容,為我們后面學(xué)習(xí)多線程的更多內(nèi)容打下堅實的基礎(chǔ)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美日韩激情在线一区二区 | 国产精品久久综合桃花网 | 婷婷久久精品 | 久久久久中文字幕 | 福利视频中文在线观看 | 日韩免费一级毛片欧美一级日韩片 | 青青操夜夜操 | 一级做a免费视频观看网站 一级做a爰片久久毛片唾 | 亚洲h在线观看 | 男人的天堂在线免费视频 | 最新欧美精品一区二区三区不卡 | 麻豆成人精品国产免费 | 亚洲欧美视频一区二区三区 | 奇米影视777狠狠狠888不卡 | 午夜欧美福利视频 | 深夜福利网站在线观看 | 爆操波多野结衣 | 国产在线91精品入口首页 | 亚州不卡| 黄色毛片一级 | 欧美性猛交99久久久久99 | 在线播放人成午夜免费视频 | 欧美成人看片一区二区三区 | 国产精品久久天天影视 | 四虎网站在线观看 | 久久精品日本免费线 | 欧美成人免费观看国产 | 久久亚洲福利 | 啪啪网站免费 | 高清一区二区亚洲欧美日韩 | 精品91视频| 天天躁日日躁成人字幕aⅴ 天天躁日日躁狠狠躁黑人躁 | 日韩视频免费一区二区三区 | 婷婷六月天激情 | 欧美专区在线播放 | 欧美 日韩 成人 | 国产女人久久精品 | 嫩草社区 | 日韩免费不卡视频 | 欧美在线播放一区二区 | 在线看污网站 |