1. synchronized是JVM层面上的,而lock是一个接口
2. 发生异常是,synchronized会自动释放占有的锁;而lock必须在finally里释放锁,否则可能引发死锁的发生。
3. lock等待锁过程当中能够用interrupt来终端等待,而synchronized只能等待锁的释放,不能响应中断;
4. lock能够经过trylock来知道有没有获取锁,而synchronized不能;
5. synchronized在少许同步时跟lock效率差很少,大量同步时synchronized效率较低。接口