参考答案
结论:Synchronized是JVM内置关键字锁,Lock是API层面锁。本质区别:1.实现:Synchronized基于monitor对象,自动获取释放;Lock基于AQS队列,需手动unlock;2.功能:Lock支持可中断、超时、公平多选、多条件;Synchronized不可中断、非公平、单一条件;3.性能:优化后接近,Lock更灵活;4.释放:Synchronized异常自动释放,Lock须在finally释放。原理:Synchronized通过对象头mark word关联monitor;Lock用volatile state和CAS实现。理论理解:前者语言级同步,后者并发包工具。