多線程下Lock的理解

java.util.concurrent.locks.Lock接口

簡介

在多少線程的線程安全處理方式上大概分為
  • synchronized
  • lock
  1. synchronized介紹:JAVA的關鍵字;可給當前的方法加鎖,使的線程在執(zhí)行的排隊
public void getTicks(){
    synchronized (Object.class){
        //加鎖代碼塊
    }
}
優(yōu)缺點分析
  • 操作相對簡單,對簡單的多線程業(yè)務比較方便
  • 暴力加鎖,加鎖除非當前線程放開鎖,或者線程死亡 由JVM釋放,不然會一直拿著鎖,
  • 線程拿不到當前鎖的狀態(tài),不知道哪個線程拿到了鎖,
  • 在進行IO操作時,一旦由于網(wǎng)絡等原因,容易造成死鎖

Lock實現(xiàn)代碼鎖

    Lock l = ...; 
     l.lock();
     try {
         // access the resource protected by this lock
     } finally {
         l.unlock();
     }

Lock分為樂觀鎖和悲觀鎖

  • 樂觀鎖 read鎖,可以支持多線程同時獲取
  • 悲觀鎖 類似synchronized
優(yōu)缺點
  • Lock線程在拿到鎖的時候,其他線程可以不斷嘗試獲取鎖,不會一直等待
  • 可以設置超時時間,超出后拋出異常
  • 支持樂觀鎖

在實際應用中建議使用Lock來進行安全操作

分布式鎖

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1.解決信號量丟失和假喚醒 public class MyWaitNotify3{ MonitorObject m...
    Q羅閱讀 1,002評論 0 1
  • Java8張圖 11、字符串不變性 12、equals()方法、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,894評論 0 11
  • 我們要每天節(jié)約用水,珍惜水還有電,不要浪費和諧環(huán)保,只有這樣我們的地球才可以有更好的環(huán)境,這樣我們可以給環(huán)衛(wèi)工人們...
    家和萬事興_f01c閱讀 162評論 0 0
  • 想想四年前來這個學校的時候,還是一個沒見過大城市的農(nóng)村娃兒,感覺自己與這座城市格格不入。但是在大學的這四年經(jīng)過了太...
    劉水閱讀 224評論 0 0
  • 羅藝作業(yè)本閱讀 249評論 0 0

友情鏈接更多精彩內(nèi)容