<button id="rxoxw"><acronym id="rxoxw"></acronym></button>
<em id="rxoxw"></em>
      <em id="rxoxw"><acronym id="rxoxw"></acronym></em>
    1. <tbody id="rxoxw"><track id="rxoxw"></track></tbody>
      <tbody id="rxoxw"></tbody>

      1. 教育行業A股IPO第一股(股票代碼 003032)

        全國咨詢/投訴熱線:400-618-4000

        問答>JavaEE>lock和synchronized到底啥區別?

        lock和synchronized到底啥區別?

        來源傳智教育2022年03月17日 11時13分09秒

          lock和synchronized區別主要體現在5個方面:

              1.語法層面

          * synchronized 是關鍵字,源碼在 jvm 中,用 c++ 語言實現

          * Lock 是接口,源碼由 jdk 提供,用 java 語言實現

          * 使用 synchronized 時,退出同步代碼塊鎖會自動釋放,而使用 Lock 時,需要手動調用 unlock 方法釋放鎖

          2.功能層面

          * 二者均屬于悲觀鎖、都具備基本的互斥、同步、鎖重入功能

          * Lock 提供了許多 synchronized 不具備的功能,例如獲取等待狀態、公平鎖、可打斷、可超時、多條件變量

          * Lock 有適合不同場景的實現,如 ReentrantLock, ReentrantReadWriteLock

          3.性能層面

          * 在沒有競爭時,synchronized 做了很多優化,如偏向鎖、輕量級鎖,性能不賴

          * 在競爭激烈時,Lock 的實現通常會提供更好的性能

          4.公平鎖

          公平鎖的公平體現

          已經處在阻塞隊列**中的線程(不考慮超時)始終都是公平的,先進先出

          公平鎖是指**未處于阻塞隊列**中的線程來爭搶鎖,如果隊列不為空,則老實到隊尾等待

          非公平鎖是指**未處于阻塞隊列**中的線程來爭搶鎖,與隊列頭喚醒的線程去競爭,誰搶到算誰的

          公平鎖會降低吞吐量,一般不用

          5.條件變量

          * ReentrantLock 中的條件變量功能類似于普通 synchronized 的 wait,notify,用在當線程獲得鎖后,發現條件不滿足時,臨時等待的鏈表結構

          * 與 synchronized 的等待集合不同之處在于,ReentrantLock 中的條件變量可以有多個,可以實現更精細的等待、喚醒控制。

        和我們在線交談!
        精品亚洲成A人在线观看青青,国产亚洲精品综合在线,亚洲 欧美 国产 日韩 字幕,日本在线高清不卡免V

        <button id="rxoxw"><acronym id="rxoxw"></acronym></button>
        <em id="rxoxw"></em>
            <em id="rxoxw"><acronym id="rxoxw"></acronym></em>
          1. <tbody id="rxoxw"><track id="rxoxw"></track></tbody>
            <tbody id="rxoxw"></tbody>