日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java核心篇之Java锁--day2

發布時間:2025/3/12 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java核心篇之Java锁--day2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java核心篇之Java鎖–day2

  • 樂觀鎖:樂觀鎖是一種樂觀思想,即認為讀多寫少,每次去取數據的時候都認為其他人不會修改,所以不會上鎖;但是在更新的時候會判斷一下在此期間別人有沒有去修改它,如果有人修改的話,就需要重新嘗試。實現的方式主要有以下兩種:
    1) 版本號機制:一般是在數據表中加上一個數據版本號的version字段,表示數據被修改的次數,當數據被修改時,版本號就會+1,在提交更新時,若剛才讀取到的version值與當前數據庫中version的值相等時才進行更新,否則重試更新操作,直到更新成功。
    2)CAS:compare and swap
    CAS涉及到三個操作數:
    V:需要讀寫的內存值
    A:進行比較的值
    B:擬寫入的新值
    當且僅當V=A時,CAS通過原子方式用新值B來代替V,否則不會執行任何操作(比較和替換是一個原子操作),一般情況是自旋操作
  • 樂觀鎖缺點:ABA問題,循環時間長開銷大
  • 悲觀鎖:是一種悲觀思想,即認為寫多,讀少,每次去取數據的時候都認為別人會修改,所以每次讀數據的時候都會加鎖,這樣別人想拿到這個數據的話就會一直block直至拿到鎖。Java的悲觀鎖synchronized。

  • 自旋鎖:如果持有鎖的線程能在很短時間內釋放資源,那么等待競爭鎖的線程就不需要進入阻塞掛起狀態,他們只需要等一等(自旋),等持有鎖的線程釋放鎖后即可立即獲取到鎖,這樣能夠避免用戶上下文切換所帶來的消耗。

  • synchronized同步鎖,它屬于悲觀鎖,同時也屬于可重入鎖。

  • synchronized與reentrantLock的對比:
    1、ReentrantLock 擁有Synchronized相同的并發性和內存語義,此外還多了定時鎖等候和中斷鎖等候
    ???? 線程A和B都要獲取對象O的鎖定,假設A獲取了對象O鎖,B將等待A釋放對O的鎖定, 如果使用 synchronized ,如果A不釋放,B將一直等下去,不能被中斷;
    ???? 如果 使用ReentrantLock,如果A不釋放,可以使B在等待了足夠長的時間以后,中斷等待,而干別的事情
    ??? ReentrantLock獲取鎖定與三種方式:
    ??? a)? lock(), 如果獲取了鎖立即返回,如果別的線程持有鎖,當前線程則一直處于休眠狀態,直到獲取鎖
    ??? b) tryLock(),?如果獲取了鎖立即返回true,如果別的線程正持有鎖,立即返回false;
    ??? c)tryLock(long?timeout,TimeUnit?unit),???如果獲取了鎖定立即返回true,如果別的線程正持有鎖,會等待參數給定的時間,在等待的過程中,如果獲取了鎖定,就返回true,如果等待超時,返回false;
    ??? d) lockInterruptibly:如果獲取了鎖定立即返回,如果沒有獲取鎖定,當前線程處于休眠狀態,直到或者鎖定,或者當前線程被別的線程中斷
    ?
    2、synchronized是在JVM層面上實現的,不但可以通過一些監控工具監控synchronized的鎖定,而且在代碼執行時出現異常,JVM會自動釋放鎖定,但是使用Lock則不行,lock是通過代碼實現的,要保證鎖定一定會被釋放,就必須將unLock()放到finally{}中
    ?
    3、在資源競爭不是很激烈的情況下,Synchronized的性能要優于ReetrantLock,但是在資源競爭很激烈的情況下,Synchronized的性能會下降幾十倍,但是ReetrantLock的性能能維持常態;

  • 都是可重入鎖,
    可重入性在我看來實際上表明了鎖的分配機制:基于線程的分配,而不是基于方法調用的分配。舉個簡單的例子,當一個線程執行到某個synchronized方法時,比如說method1,而在method1中會調用另外一個synchronized方法method2,此時線程不必重新去申請鎖,而是可以直接執行方法method2。

  • 可中斷鎖:在Java中,synchronized就不是可中斷鎖,而Lock是可中斷鎖。
      如果某一線程A正在執行鎖中的代碼,另一線程B正在等待獲取該鎖,可能由于等待時間過長,線程B不想等待了,想先處理其他事情,我們可以讓它中斷自己或者在別的線程中中斷它,這種就是可中斷鎖。
    在前面演示lockInterruptibly()的用法時已經體現了Lock的可中斷性。
    6.公平鎖:
    公平鎖即盡量以請求鎖的順序來獲取鎖。比如同是有多個線程在等待一個鎖,當這個鎖被釋放時,等待時間最久的線程(最先請求的線程)會獲得該所,這種就是公平鎖。
      非公平鎖即無法保證鎖的獲取是按照請求鎖的順序進行的。這樣就可能導致某個或者一些線程永遠獲取不到鎖。
    synchronized就是非公平鎖,它無法保證等待的線程獲取鎖的順序。
    而對于ReentrantLock和ReentrantReadWriteLock,它默認情況下是非公平鎖,但是可以設置為公平鎖。

  • 總結

    以上是生活随笔為你收集整理的Java核心篇之Java锁--day2的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲色图2 | 色爽爽爽爽爽爽爽爽 | 黄色三级视频 | 久久精品国产99久久 | 花房姑娘免费观看全集 | 久久久久国产精品 | 久久久精彩视频 | 一区二区av电影 | 美国少妇在线观看免费 | 国产精品亚洲欧美在线播放 | 999资源站 | 国产三级久久久久 | 一区二区国产精品 | 欧美性猛交富婆 | 爱情岛亚洲论坛入口福利 | 久久96视频 | 麻豆视频在线观看免费 | 亚洲网址 | 欧美10p| 自拍偷拍第5页 | 天天久久综合 | 小少妇哺乳喂奶播放 | 日韩在线视频一区二区三区 | 91av麻豆 | 一级片啪啪 | 中文字幕欧美在线观看 | 欧洲mv日韩mv国产 | 蛇女欲潮性三级 | 直接看的毛片 | 国产乱淫av一区二区三区 | 男生桶女生肌肌 | 禁漫天堂下载18 | 日韩在线毛片 | 欧美精品第一页 | 日本在线观看一区二区 | 麻豆亚洲精品 | 伊人激情视频 | 亚洲美女视频 | 久久久精品视频一区 | 九九在线观看视频 | 97免费看| 国产高潮久久久 | www.四虎com| 午夜性福利 | 欧美天天视频 | 91在线成人 | 国产56页 | 双性人做受视频 | 日韩久久久久久久久 | 中文字幕18页 | 丰满女邻居的色诱4hd | 91av在线免费视频 | 操你啦在线视频 | 欧美日韩aaa | 综合网伊人 | 精品国产黄| 国产成人在线精品 | 精品一区二区人妻 | 偷偷操不一样的99 | 久久久xxx| 日韩欧美国产一区二区三区在线观看 | 免费a网址| 三区四区 | 天堂网在线观看 | 国产精品午夜福利视频234区 | 在线免费日韩av | 国产美女永久免费无遮挡 | 日韩av不卡电影 | 献给魔王伊伏洛基亚吧动漫在线观看 | 女生下面流水视频 | 国产精品视频第一页 | 无套中出丰满人妻无码 | 国产夫绿帽单男3p精品视频 | 波多野结衣伦理 | 天天想你免费观看完整版高清电影 | 欧美第一页 | 午夜婷婷在线观看 | 免费在线观看你懂的 | 免费观看的av | 小视频在线播放 | 久久一区二区三区四区五区 | 亚洲久久在线 | 麻豆视频一区二区 | 男人天堂影院 | 国产一区日韩精品 | 深夜在线免费视频 | 一区二区中文字幕在线观看 | 国产高清视频一区二区 | av在线观 | 深夜福利麻豆 | 久久久久性色av无码一区二区 | 日本一区二区三区精品 | wwwxx国产| 久久av一区二区 | 怒海潜沙秦岭神树 | av香蕉| 全部免费毛片在线播放一个 | 国产精品精品国产色婷婷 | 少妇不卡视频 |