lock和synchronized区别
                           
天天向上
发布: 2025-07-12 12:46:43

原创
460 人浏览过

在 Java 中,synchronizedLock(通常指 java.util.concurrent.locks.Lock 接口及其实现如 ReentrantLock)都是实现线程同步的重要手段,但它们在使用方式、底层机制、灵活性与性能方面存在明显差异。


一、基本概念对比

特性synchronizedLock(如 ReentrantLock
所属包java 关键字(JVM 内建)java.util.concurrent.locks
控制方式JVM 层面实现基于 AQS(AbstractQueuedSynchronizer)实现
是否可重入✅ 是✅ 是(如 ReentrantLock
可否中断锁等待❌ 不支持✅ 支持(如 lockInterruptibly()
是否可尝试获取❌ 不支持tryLock() 支持
是否可定时获取❌ 不支持tryLock(long, TimeUnit) 支持
公平锁支持❌ 不支持✅ 支持(构造函数中传入 true
是否可绑定条件❌ 不支持✅ 支持 Condition 对象实现更细粒度控制
自动释放✅ 是(自动释放锁)❌ 否(必须手动释放:unlock()
读写锁支持❌ 不支持✅ 支持(如 ReentrantReadWriteLock
性能(JDK 1.5+)中等高(适用于竞争激烈场景)

二、示例对比

示例 1️⃣:synchronized

public synchronized void doSomething() {
    // 临界区
}

或使用同步块:

public void doSomething() {
    synchronized(this) {
        // 临界区
    }
}

特点:

  • 锁的是对象或类
  • 进入和退出锁由 JVM 自动控制

示例 2️⃣:Lock(如 ReentrantLock

private final ReentrantLock lock = new ReentrantLock();

public void doSomething() {
    lock.lock();
    try {
        // 临界区
    } finally {
        lock.unlock(); // 非常重要!否则会死锁
    }
}

可用特性:

if (lock.tryLock(2, TimeUnit.SECONDS)) {
    try {
        // 成功加锁
    } finally {
        lock.unlock();
    }
} else {
    // 未能在 2 秒内获取锁
}

三、底层原理对比

特性synchronizedLock
实现机制JVM 内部 monitor(monitorenter / monitorexit)基于 AQS(AbstractQueuedSynchronizer)
队列类型内部不可见CLH 队列可控
阻塞/唤醒机制JVM Object.wait() / notify()LockSupport.park() / unpark()
可视化控制队列❌ 不可控✅ 可管理、可调试

四、适用场景

场景推荐工具
简单同步场景(如同步方法)synchronized
需中断锁、定时锁尝试等高级控制Lock
读多写少场景ReentrantReadWriteLock
条件变量(如 await/signal)Condition
锁竞争激烈、性能要求高ReentrantLock

五、Lock 特有功能(synchronized 做不到)

  1. 可中断加锁lockInterruptibly()
  2. 定时加锁tryLock(timeout, unit)
  3. 公平锁策略:避免饥饿(如 ReentrantLock(true))
  4. 多个条件变量支持:一个锁可配多个 Condition,更灵活
  5. 读写锁分离:如 ReentrantReadWriteLock 提供读写分离锁

六、性能对比(现代 JVM)

  • 低竞争场景synchronizedLock 差距不大
  • 高并发、高冲突 场景下,Lock 表现更优(因为支持自旋、阻塞队列优化)
  • JDK 1.6+ 后引入了偏向锁、轻量级锁,synchronized 性能提升显著

七、总结建议

如果你想…建议使用
简单加锁控制、无需太多灵活性synchronized
需要灵活地处理锁的获取、中断、定时、队列管理等Lock
实现复杂同步器(如信号量、栅栏、屏障)自定义 AQS ✅

八、官方与权威资源推荐


更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *