- synchronized Java 内置的关键字;Lock 是一个Java 类。
- synchronized 无法判断获取锁的状态;Lock 可以判断是否获取到锁。
- synchronized 会自动释放锁;Lock 必须手动释放锁,如果不释放锁,将会造成死锁。
- synchronized 线程1(获取锁,阻塞了)线程2(等待,一直等待);Lock 锁就不一定待定下去。
- synchronized 可重入锁,不可以中断,非公平锁;Lock 可重入锁,可以判断锁,是否公平锁(可以设置)。
- synchronzied 适合锁少量的同步代码问题;Lock 适合大量的同步代码。
synchronized | Lock | |
---|---|---|
1 | Java 内置的关键字 | 是一个Java 类 |
2 | 无法判断获取锁的状态 | 可以判断是否获取到锁 |
3 | 会自动释放锁 | 必须手动释放锁,如果不释放锁,将会造成死锁 |
4 | 线程1(获取锁,阻塞了)线程2(等待,一直等待) | Lock 锁就不一定待定下去 |
5 | 可重入锁,不可以中断,非公平锁 | 可重入锁,可以判断锁,是否公平锁(可以设置) |
6 | 适合锁少量的同步代码问题 | 适合大量的同步代码 |