程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 手寫總結:synchronized 和 lock 區別,synchronizedlock

手寫總結:synchronized 和 lock 區別,synchronizedlock

編輯:JAVA綜合教程

手寫總結:synchronized 和 lock 區別,synchronizedlock


    1.  synchronized 是jvm 層次的(可以會造成死鎖), lock 可以寫代碼控制,一般在異常時在 finally 裡可以 unlock 釋放鎖

    2. lock 細度更細,synchronized 一個線程鎖住了,其他線程無法進入。而 lock 裡的 ReadWriteLock 可以獲得 讀鎖 和寫鎖。可以允許多個寫鎖進入,

寫鎖和寫鎖不互斥,寫鎖和(寫鎖或者讀鎖)互斥

    3. lock 可以用  trylock  試著獲得 鎖 ,如果獲得返回true,接著執行,否則可以去執行其他事情,而 synchronized 則一直等待,同時tryLock 還可以設置

在某個時間段內獲得鎖

      if(lock.tryLock()){

       // 獲得鎖 ,繼續執行

     } else {

      // 沒獲得鎖 ,干其他事情

     }

   4. lock 可以new 一個 condition ,condition 相當於 wait  和 notify  的作用

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved