国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Synchronized由什么樣的缺陷? Java Lock是怎么彌補這些缺陷的

Synchronized由什么樣的缺陷? Java Lock是怎么彌補這些缺陷的

來源:千鋒教育
發布人:syq
時間: 2022-09-08 17:10:00 1662628200

  synchronized的缺陷

  1.效率低:鎖的釋放情況少,只有代碼執行完畢或者異常結束才會釋放鎖;試圖獲取鎖的時候不能設定超時,不能中斷一個正在使用鎖的線程,相對而言,Lock可以中斷和設置超時。

Synchronized由什么樣的缺陷

  2.不夠靈活:加鎖和釋放的時機單一,每個鎖僅有一個單一的條件(某個對象),相對而言,讀寫鎖更加靈活

  3.無法知道是否成功獲得鎖,相對而言,Lock可以拿到狀態

  Lock解決相應問題

  Lock類這里不做過多解釋,主要看里面的4個方法:

  lock(): 加鎖 unlock(): 解鎖 tryLock(): 嘗試獲取鎖,返回一個boolean值 tryLock(long,TimeUtil): 嘗試獲取鎖,可以設置超時

  Synchronized只有鎖只與一個條件(是否獲取鎖)相關聯,不靈活,后來Condition與Lock的結合解決了這個問題。

  多線程競爭一個鎖時,其余未得到鎖的線程只能不停的嘗試獲得鎖,而不能中斷。高并發的情況下會導致性能下降。ReentrantLock的lockInterruptibly()方法可以優先考慮響應中斷。 一個線程等待時間過長,它可以中斷自己,然后ReentrantLock響應這個中斷,不再讓這個線程繼續等待。有了這個機制,使用ReentrantLock時就不會像synchronized那樣產生死鎖了。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT