1. synchronized是JVM層面上的,而lock是一個接口
2. 發生異常是,synchronized會自動釋放佔有的鎖;而lock必須在finally裏釋放鎖,否則可能引發死鎖的發生。
3. lock等待鎖過程當中能夠用interrupt來終端等待,而synchronized只能等待鎖的釋放,不能響應中斷;
4. lock能夠經過trylock來知道有沒有獲取鎖,而synchronized不能;
5. synchronized在少許同步時跟lock效率差很少,大量同步時synchronized效率較低。接口