各類鎖

公平鎖和非公平鎖併發

  1. 是什麼app

    公平鎖就是先來後到、非公平鎖就是容許加塞,Lock lock = new ReentrantLock(Boolean fair); 默認非公平。高併發

    • **==公平鎖==**是指多個線程按照申請鎖的順序來獲取鎖,相似排隊打飯。ui

    • **==非公平鎖==**是指多個線程獲取鎖的順序並非按照申請鎖的順序,有可能後申請的線程優先獲取鎖,在高併發的狀況下,有可能會形成優先級反轉或者節現象。線程

  2. 二者區別code

    • 公平鎖:Threads acquire a fair lock in the order in which they requested it隊列

      公平鎖,就是很公平,在併發環境中,每一個線程在獲取鎖時,會先查看此鎖維護的等待隊列,若是爲空,或者當前線程就是等待隊列的第一個,就佔有鎖,不然就會加入到等待隊列中,之後會按照FIFO的規則從隊列中取到本身。it

    • 非公平鎖:a nonfair lock permits 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.thread

      非公平鎖比較粗魯,上來就直接嘗試佔有額,若是嘗試失敗,就再採用相似公平鎖那種方式。request

相關文章
相關標籤/搜索