91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中線程公平鎖和非公平鎖的區別是什么

發布時間:2021-06-11 15:10:22 來源:億速云 閱讀:260 作者:Leah 欄目:編程語言

本篇文章為大家展示了Java中線程公平鎖和非公平鎖的區別是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

公平鎖,顧名思義,它是公平的,可以保證獲取鎖的線程按照先來后到的順序,獲取到鎖。

非公平鎖,顧名思義,各個線程獲取到鎖的順序,不一定和它們申請的先后順序一致,有可能后來的線程,反而先獲取到了鎖。

在實現上,公平鎖在進行lock時,首先會進行tryAcquire()操作。在tryAcquire中,會判斷等待隊列中是否已經有別的線程在等待了。如果隊列中已經有別的線程了,則tryAcquire失敗,則將自己加入隊列。如果隊列中沒有別的線程,則進行獲取鎖的操作。

/**
     * Fair version of tryAcquire. Don't grant access unless
     * recursive call or no waiters or is first.
     **/
    protected final boolean tryAcquire(int acquires) {
      final Thread current = Thread.currentThread();
      int c = getState();
      if (c == 0) {
        if (!hasQueuedPredecessors() &&
          compareAndSetState(0, acquires)) {
          setExclusiveOwnerThread(current);
          return true;
        }
      }
      else if (current == getExclusiveOwnerThread()) {
        int nextc = c + acquires;
        if (nextc < 0)
          throw new Error("Maximum lock count exceeded");
        setState(nextc);
        return true;
      }
      return false;
    }

非公平鎖,在進行lock時,會直接嘗試進行加鎖,如果成功,則獲取到鎖,如果失敗,則進行和公平鎖相同的動作。

從公平鎖和非公平的實現上來看,他們的操作基本相同,唯一的區別在于,在lock時,非公平鎖會直接先進行嘗試加鎖的操作。

當前一個線程完成了鎖的使用,并且釋放了,而且此時等待隊列非空時,如果這是有新線程申請鎖,那么,公平鎖和非公平鎖的表現就會出現差異。

上述內容就是Java中線程公平鎖和非公平鎖的區別是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金堂县| 嘉荫县| 同仁县| 江西省| 乐至县| 赫章县| 洛扎县| 石阡县| 南丰县| 万荣县| 临夏市| 平度市| 阿荣旗| 定兴县| 乐安县| 鄂托克前旗| 信宜市| 溧阳市| 台南县| 秭归县| 彩票| 安国市| 上高县| 汉沽区| 绥阳县| 临洮县| 巴青县| 怀集县| 崇阳县| 襄汾县| 旅游| 尉氏县| 根河市| 霸州市| 当雄县| 五家渠市| 治多县| 两当县| 上饶市| 吉木萨尔县| 宿松县|