①:synchronized是JVM层面实现的,java提供的关键字,Lock是API层面的锁。
②:synchronized不需要手动释放锁,底层会自动释放,Lock则需要手动释放锁,否则有可能导致死锁
③:synchronized等待不可中断,除非抛出异常或者执行完成, Lock可以中断,通过interrupt()可中断
④: synchronized是非公平锁, Lock是默认公平锁,当传入false时是非公平锁
⑤:synchronized不可绑定多个条件, Lock可实现分组唤醒需要唤醒的锁