Synchronized 和 lock 的區別



Synchronized
 1:jvm 層面實現,如果拋異常的話,jvm會自動釋放掉鎖
 2:只有一個條件變量,鎖對象的wait 和 notify
 3:可以被性能監視工具監視到
 4:如果在方法上添加syn那么,鎖對象就是該對象,共享該對象的線程就會互斥

Lock
 1:更加面向對象
 2:代碼層面實現
 3:可以產生多個條件變量

 4:可以嘗試非阻塞的獲取鎖,能中斷的獲取鎖,能超時獲取鎖


Lock能完成所有synchronized的功能,並且更加面向對象,能提供更精確的定義,更好的性能
synchronized 會自動釋放鎖,lock需要手動釋放鎖.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM