1. 程式人生 > >解析ReentrantLock實現原理

解析ReentrantLock實現原理

jvm syn 獲取鎖 基於 lse ava 原理 方法 中斷

  在Java中通常實現鎖有兩種方式,一種是synchronized關鍵字,另一種是Lock。首先最大的不同:synchronized是基於JVM層面實現的,而Lock是基於JDK層面實現的。

對於使用者的直觀體驗上Lock是比較復雜的,需要lock和realse,如果忘記釋放鎖就會產生死鎖的問題,所以,通常需要在finally中進行鎖的釋放。但是synchronized的使用十分簡單,只需要對自己的方法或者關註的同步對象或類使用synchronized關鍵字即可。但是對於鎖的粒度控制比較粗,同時對於實現一些鎖的狀態的轉移比較困難。例如:

特點:

tipssynchronizedLock
鎖獲取超時 不支持 支持
獲取鎖響應中斷 不支持 支持

解析ReentrantLock實現原理