Synchronized鎖和Lock鎖
1、synchronized是JVM層面實現的,java提供的關鍵字,Lock是API層面的鎖。
2、synchronized不需要手動釋放鎖,底層會自動釋放,Lock則需要手動釋放鎖,否則有可能導致死鎖。
3、synchronized等待不可中斷,除非拋出異常或者執行完成, Lock可以中斷,通過interrupt()可中斷。
4、synchronized是非公平鎖,Lock是默認公平鎖,當傳入false時是非公平鎖。
5、synchronized不可綁定多個條件,Lock可實現分組喚醒需要喚醒的鎖。