1. 程式人生 > >jdk 原始碼分析(8)java synchronized和鎖lock對比

jdk 原始碼分析(8)java synchronized和鎖lock對比

因為synchronized 是關鍵字,無法看到原始碼,所以只能做一個簡單的分析對比了, synchronized 能鎖方法,也能鎖程式碼塊,其實也是一種重入鎖(也就是自己的鎖,自己可以進去),程式碼塊或方法離開,自動釋放鎖。
lock:lock能做synchronized能做的所有的事情,但是lock 能過在資源競爭地方,通過投票等方法讓其他鎖釋放。而synchronized必須自願,lock 需要自己釋放出來,所以一般將lock.lock 放在try裡面,而lock.unlock 放在finally 裡面。 synchronized 配套的wait和notify ,與lock的condition 裡的await和 signal 相對應,lock可以獲取多個condition。 據網上資料建議: synchronized在處理競爭壓力不強的地方效能遠好於lock ,而lock相反。具體什麼地方使用synchronized 和
lock酌情考慮。