synchronized与Lock的区别
1、锁的实现方式不同:synchronized采用monitor enter/monitor exite实现;Lock采用CAS实现。
2、锁的释放方式不同:synchronized自动释放锁;Lock需要手动释放。
3、synchronized是java关键字;Lock是java的API。
4、synchronized不可以中断;Lock可以中断(lockInterruptibly()方法)。
5、synchronized是非公平锁;Lock可是是非公平锁和公平锁,默认非公平锁。
6、synchronized没有锁绑定多个条件;lock有Condition,可以实现分组唤醒需要唤醒的线程们,可以精确唤醒。
7、Lock可以通过tryLock()尝试获得锁,synchronized加入等待队列。