参考答案
结论:synchronized是JVM内置关键字,自动加解锁;ReentrantLock是JUC提供的API锁,需手动释放但功能更灵活。区别:1.实现机制:synchronized基于monitor指令,ReentrantLock基于AQS队列;2.灵活性:ReentrantLock支持可中断锁、超时获取、公平锁及多Condition;3.释放方式:synchronized退出同步块自动释放,ReentrantLock必须在finally中调用unlock;4.性能:JDK6后偏向锁轻量级锁优化使两者相近,高并发下ReentrantLock可控性更好;示例:lock.lock(); try{ doWork(); } finally { lock.unlock(); }