国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題

這篇具有很好參考價(jià)值的文章主要介紹了并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題

樂(lè)觀鎖總結(jié):

優(yōu)點(diǎn):不加鎖性能好。
缺點(diǎn):同時(shí)請(qǐng)求成功率低(即只要發(fā)現(xiàn)數(shù)據(jù)變了就放棄了)。
樂(lè)觀鎖思想的具體體現(xiàn):一共兩步,第一步,先查詢(xún)狀態(tài)。第二步,再更新數(shù)據(jù)時(shí)必須where等于前面的狀態(tài),確保數(shù)據(jù)沒(méi)有改變。
第二步集查詢(xún)和操作數(shù)據(jù)于一身具有原子性。

在有數(shù)量限制的業(yè)務(wù)中(即先查詢(xún)的就是這個(gè)數(shù)據(jù)),要想提高成功率,可以在第二步中數(shù)據(jù)不必等于第一步查詢(xún)的數(shù)據(jù),而是小于第一步中查詢(xún)的數(shù)據(jù)即可,這樣就可以完美降低失敗率,只有數(shù)量耗盡時(shí)才會(huì)失敗。

**舉個(gè)例子:**比如賣(mài)書(shū),書(shū)有數(shù)量限制num_total=10,以賣(mài)出數(shù)量為num:
第一步查詢(xún):select * from book where id = xxx;
if (book.num < book.num_total) {可以繼續(xù)執(zhí)行第二步} else {拒絕賣(mài)書(shū)操作}
第二步查詢(xún)加更新:update book set num = num + 1 where num < num_total;
第二步中沒(méi)有使用標(biāo)準(zhǔn)的樂(lè)觀鎖即數(shù)據(jù)沒(méi)有被操作才更新 (num = #{num})
而是讓num < num_total只要沒(méi)有達(dá)到庫(kù)存上限即可操作,提高了并發(fā)的成功率,只要不是num=num_total都可以成功。

典型查詢(xún)、判斷、更新三個(gè)操作非原子性

并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java

解決方案-加鎖即可,加鎖的思想分為兩類(lèi):悲觀鎖和樂(lè)觀鎖。

悲觀鎖是在操作數(shù)據(jù)之前先獲取鎖,有鎖才能操作,這樣安全了,但是性能下降了,把并發(fā)改為了單線(xiàn)程串行執(zhí)行。
樂(lè)觀鎖不加鎖,只會(huì)先查詢(xún)一次,然后在操作數(shù)據(jù)時(shí)再查詢(xún)一次(這里的查詢(xún)與修改是原子性的,例如前面第一次查詢(xún)變量a為1,等到操作數(shù)據(jù)時(shí)就要在SQL中update xxx set xxx=xxx where a = 1,這樣就讓查詢(xún)和修改操作具有原子性),如果數(shù)據(jù)改變了就異常或者重試。

并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java
并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題,JUC并發(fā)編程,并發(fā)安全,樂(lè)觀鎖,超賣(mài),java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-717919.html

到了這里,關(guān)于并發(fā)安全問(wèn)題之超賣(mài)問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java JUC并發(fā)編程 第六章 CAS

    java JUC并發(fā)編程 第六章 CAS

    第一章 java JUC并發(fā)編程 Future: link 第二章 java JUC并發(fā)編程 多線(xiàn)程鎖: link 第三章 java JUC并發(fā)編程 中斷機(jī)制: link 第四章 java JUC并發(fā)編程 java內(nèi)存模型JMM: link 第五章 java JUC并發(fā)編程 volatile與JMM: link 第六章 java JUC并發(fā)編程 CAS: link 第七章 java JUC并發(fā)編程 原子操作類(lèi)增強(qiáng): link 第八章

    2024年02月10日
    瀏覽(23)
  • JUC并發(fā)編程學(xué)習(xí)筆記(三)生產(chǎn)者和消費(fèi)者問(wèn)題

    synchronized版- wait/notify juc版-Lock 面試:?jiǎn)卫J?、排序算法、生產(chǎn)者和消費(fèi)者、死鎖 生產(chǎn)者和消費(fèi)者問(wèn)題 Synchronized版 存在的問(wèn)題:A、B、C、D四個(gè)線(xiàn)程 在線(xiàn)程中判斷業(yè)務(wù)完成喚醒等待應(yīng)該使用while循環(huán)判斷,而非if判斷,因?yàn)閕f判斷值判斷一次,在線(xiàn)程中存在一種狀態(tài)叫虛假喚

    2024年02月06日
    瀏覽(21)
  • java JUC并發(fā)編程 第九章 對(duì)象內(nèi)存布局與對(duì)象頭

    java JUC并發(fā)編程 第九章 對(duì)象內(nèi)存布局與對(duì)象頭

    第一章 java JUC并發(fā)編程 Future: link 第二章 java JUC并發(fā)編程 多線(xiàn)程鎖: link 第三章 java JUC并發(fā)編程 中斷機(jī)制: link 第四章 java JUC并發(fā)編程 java內(nèi)存模型JMM: link 第五章 java JUC并發(fā)編程 volatile與JMM: link 第六章 java JUC并發(fā)編程 CAS: link 第七章 java JUC并發(fā)編程 原子操作類(lèi)增強(qiáng): link 第八章

    2024年02月07日
    瀏覽(18)
  • JUC并發(fā)編程——集合類(lèi)不安全及Callable(基于狂神說(shuō)的學(xué)習(xí)筆記)

    List不安全 CopyOnWriteArrayList與vector對(duì)比,以下來(lái)自CSDN智能助手的回答: Java中的CopyOnWriteArrayList和Vector都是線(xiàn)程安全的動(dòng)態(tài)數(shù)組,可以在多線(xiàn)程環(huán)境下使用。 CopyOnWriteArrayList使用了一種特殊的寫(xiě)時(shí)復(fù)制機(jī)制,它在對(duì)數(shù)組進(jìn)行修改時(shí),會(huì)創(chuàng)建一個(gè)新的副本,而不是直接在原數(shù)組上

    2024年02月07日
    瀏覽(32)
  • JUC并發(fā)編程-線(xiàn)程和進(jìn)程、Synchronized 和 Lock、生產(chǎn)者和消費(fèi)者問(wèn)題

    JUC并發(fā)編程-線(xiàn)程和進(jìn)程、Synchronized 和 Lock、生產(chǎn)者和消費(fèi)者問(wèn)題

    源碼 + 官方文檔 面試高頻問(wèn)! java.util 工具包、包、分類(lèi) 業(yè)務(wù):普通的線(xiàn)程代碼 Thread Runnable Runnable 沒(méi)有返回值、效率相比入 Callable 相對(duì)較低! 線(xiàn)程、進(jìn)程,如果不能使用一句話(huà)說(shuō)出來(lái)的技術(shù),不扎實(shí)! 進(jìn)程:一個(gè)程序,QQ.exe Music.exe 程序的集合; 一個(gè)進(jìn)程往往可以包含多

    2024年01月20日
    瀏覽(20)
  • 【并發(fā)編程】JUC并發(fā)編程(徹底搞懂JUC)

    【并發(fā)編程】JUC并發(fā)編程(徹底搞懂JUC)

    如果你對(duì)多線(xiàn)程沒(méi)什么了解,那么從入門(mén)模塊開(kāi)始。 如果你已經(jīng)入門(mén)了多線(xiàn)程(知道基礎(chǔ)的線(xiàn)程創(chuàng)建、死鎖、synchronized、lock等),那么從juc模塊開(kāi)始。 新手學(xué)技術(shù)、老手學(xué)體系,高手學(xué)格局。 JUC實(shí)際上就是我們對(duì)于jdk中java.util .concurrent 工具包的簡(jiǎn)稱(chēng) ,其結(jié)構(gòu)如下: 這個(gè)包

    2024年02月20日
    瀏覽(19)
  • JMeter壓力測(cè)試案例(商品超賣(mài)并發(fā)問(wèn)題)

    JMeter壓力測(cè)試案例(商品超賣(mài)并發(fā)問(wèn)題)

    壓力測(cè)試可以用來(lái)驗(yàn)證軟件系統(tǒng)的穩(wěn)定性和可靠性,在壓力下測(cè)試系統(tǒng)的性能和穩(wěn)定性,發(fā)現(xiàn)并解決潛在的問(wèn)題,確保系統(tǒng)在高負(fù)載情況下不會(huì)崩潰。 壓力測(cè)試可以用來(lái)評(píng)估軟件系統(tǒng)的容量和性能,通過(guò)模擬高負(fù)載情況下的用戶(hù)訪(fǎng)問(wèn)量和數(shù)據(jù)量,測(cè)試系統(tǒng)的處理能力和響應(yīng)速

    2024年02月05日
    瀏覽(28)
  • redis樂(lè)觀鎖+啟用事務(wù)解決超賣(mài)

    redis樂(lè)觀鎖+啟用事務(wù)解決超賣(mài)

    樂(lè)觀鎖用于監(jiān)視庫(kù)存(watch),然后接下來(lái)就啟用事務(wù)。 啟用事務(wù),將減庫(kù)存、下單這兩個(gè)步驟,放到一個(gè)事務(wù)當(dāng)中即可解決秒殺問(wèn)題、防止超賣(mài)。 但是?。?!樂(lè)觀鎖,會(huì)帶來(lái)\\\" 庫(kù)存遺留 問(wèn)題\\\" ,這個(gè)時(shí)候可以通過(guò)LUA腳本解決。

    2024年02月11日
    瀏覽(13)
  • 并發(fā)編程-JUC-原子類(lèi)

    并發(fā)編程-JUC-原子類(lèi)

    JUC 整體概覽 原子類(lèi) 基本類(lèi)型-使用原子的方式更新基本類(lèi)型 AtomicInteger:整形原子類(lèi) AtomicLong:長(zhǎng)整型原子類(lèi) AtomicBoolean :布爾型原子類(lèi) 引用類(lèi)型 AtomicReference:引用類(lèi)型原子類(lèi) AtomicStampedReference:原子更新引用類(lèi)型里的字段原子類(lèi) AtomicMarkableReference :原子更新帶有標(biāo)記位的引

    2024年02月21日
    瀏覽(23)
  • JUC并發(fā)編程(二)

    JUC并發(fā)編程(二)

    JUC并發(fā)編程(續(xù)) 接上一篇筆記:https://blog.csdn.net/weixin_44780078/article/details/130694996 五、Java內(nèi)存模型 JMM 即 Java Memory Model,它定義了主存、工作內(nèi)存抽象概念,底層對(duì)應(yīng)著CPU寄存器、緩存、硬件內(nèi)存、CPU 指令優(yōu)化等。 JMM 體現(xiàn)在以下幾個(gè)方面: 原子性:保證指令不會(huì)受到線(xiàn)程

    2024年02月05日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包