并发JavaJava 并发锁
- 分类
- Java 并发
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/28 21:25
答案
1. synchronized和reentrantlock都是可重入锁。 2. synchronized依赖于jvm来实现,而reentrantlock是jdk层面的实现,需要使用lock和unlock方法配合try/finally来完成加锁和释放锁操作。 3. reentrantlock比synchronized多了一些高级操作: 1. 公平锁和非公平锁:reentrantlock可以通过构造方法指定是非公平锁还是公平锁,而synchronized只能是非公平锁。 2. 等待可中断:reentrantlock可以通过lock.lockInterruptilby()来实现中断等待所的线程,就是说正在等待的线程可以放弃等待,去做别的事。 3. 选择性通知:reentrantlock可以通过Condition接口和newCondition方法来实现选择性通知。多个线程对象可以注册到指定的condition当中,从而有选择的进行线程通知。而notify/notifyAll则是由jvm选择通知的线程。
相关题目(5)
Java 并发并发JavaJava 并发锁
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
Java 并发并发JavaJava 并发
有哪些支持并发的集合?共源 1
Java 并发并发JavaJava 并发
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(并发).md
knowledge_noteQuestion 56: synchronized 和 ReentrantLock 有什么区别?
Source answer: 1. synchronized和reentrantlock都是可重入锁。 2. synchronized依赖于jvm来实现,而reentrantlock是jdk层面的实现,需要使用lock和unlock方法配合try/finally来完成加锁和释放锁操作。 3. reentrantlock比synchronized多了一些高级操作: 1. 公平锁和非公平锁:reentrantlock可以通过构造方法指定是非公平锁还是公平锁,而synchronized只能是非公平锁。 2. 等待可中断:reentrantlock可以通过lock.lockInterruptilby()来实现中断等待所的线程,就是说正在等待的线程可以放弃等待,去做别的事。 3. 选择性通知:reentrantlock可以通过Condition接口和newCondition方法来实现选择性通知。多个线程对象可以注册到指定的condition当中,从而有选择的进行线程通知。而notify/notifyAll则是由jvm选择通知的线程。
Reviewed answer: 二者都是可重入锁。synchronized 由 JVM 层面实现,使用更简单;ReentrantLock 属于 JDK 显式锁,需要手动 lock/unlock,通常配合 try/finally。ReentrantLock 额外支持公平锁、可中断等待和 Condition 选择性通知等高级特性。