一、底层构成
Synchronized是JVM的关键字,由monitorEnter和monitorExit组成,由于wait和notify也依赖于monitorEnter和monitorExit,所以 wait和notify必须在Synchronized 里面使用
Lock是jdk提供的JUC包下的类,是API层面上的。
二、使用方式
Synchronized不需要手动释放
Lock必须手动释放
三、是否可中断
Synchronized不可中断
Lock可以中断
四、是否公平
Synchronized是非公平
Lock是默认非公平,但是可以是公平锁
五、绑定多个condition
Synchronized无法绑定多个condition,无法精确唤醒
Lock可以