synchronized 与 lock锁的异同

相同点:

二者都可以解决线程安全问题;

不同点:

1.、Synchronized 是Java内置的关键字;Lock是一个Java类;

2、Synchronized 无法判断锁的状态;Lock可以判断是否获取到锁;

3、Synchronized 会自动释放锁;Lock必须要手动释放锁!如果不释放锁,会出现死锁

4、Synchronized 线程 1 (获得锁,阻塞)、线程2(等待,一致等下去);Lock锁不一定等待下去,会尝试获取锁;

5、Synchronized 可重入锁,不可以中断,非公平锁;Lock 可重入锁,可以判断锁是否中断,非公平锁(可以自己设置);

6、Synchronized 适合锁少量的代码同步问题,Lock 适合锁大量的同步代码;

原文地址:https://www.cnblogs.com/luckyjcx/p/12332750.html