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

歡迎訪問 生活随笔!

生活随笔

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

java

Java锁之公平和非公平锁

發布時間:2024/2/28 java 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java锁之公平和非公平锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java鎖之公平和非公平鎖


目錄

  • 公平鎖和非公平鎖概念
  • 公平鎖和非公平鎖區別
  • ReentrantLock和synchronized是公平鎖還是非公平鎖?

  • 1. 公平鎖和非公平鎖概念


  • 公平鎖:是指多個線程按照申請鎖的順序來獲取鎖,類似排隊打飯,先來后到。
  • 非公平鎖:是指多個線程獲取鎖的順序并不是按照申請鎖的順序,有可能后申請的線程比先申請的線程優先獲取鎖,在高并發的情況下,有可能會造成優先級反轉或者饑餓現象

  • 2. 公平鎖和非公平鎖區別


  • 公平鎖:Threads acquire a fair lock in which they requested
  • 公平鎖:就是很公平,在并發壞境中.每個線程在獲取鎖時會先查看此鎖維護的等待隊列,如果為空,或者當前線程是等待隊列的第一個,就占有鎖.否則就會加入到等待隊列中.以后會按照FIFO的規則從隊列中取到自己。
  • 非公平鎖:a nonfair lock permis barging:threads requesting a lock can jump ahead of the queue of waiting threads if the lock
    happens to be available when it is requested.
  • 非公平鎖比較粗魯,上來就直接嘗試占有鎖,如果嘗試失敗,就再采用類似公平鎖那種方式。

  • 3. ReentrantLock和synchronized是公平鎖還是非公平鎖?


  • Java ReentrantLock 而言,通過構造函數指定該鎖是否為公平鎖,默認是非公平鎖。非公平鎖的優點在于吞吐量比公平鎖大。源碼如下
  • Lock lock = new ReentrantLock();

    點進去源碼截圖:

    默認為非公平鎖,當我們傳入true參數后,源碼為

    Lock lock = new ReentrantLock(true);

    點進去源碼為:

  • 對于synchronized而言,也是一種非公平鎖
  • 總結

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

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