Synchronized 和 Lock有什么区别

一、底层构成

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可以

你可能感兴趣的:(多线程)