星海

并发 · 单选题 · 第 17 题

Java 后端开发面试 · 第 17 题

与 synchronized 相比,ReentrantLock 额外提供的能力是?

  1. Asynchronized 不可重入,只有 ReentrantLock 支持同一线程重复加锁
  2. BReentrantLock 在发生异常时会自动释放锁,不需要写 finally 块
  3. C可中断地等待锁、带超时地尝试加锁,以及可选的公平锁
  4. Dsynchronized 可以通过构造参数选择公平锁,ReentrantLock 不能

答案

C C. 可中断地等待锁、带超时地尝试加锁,以及可选的公平锁

解析

ReentrantLock 有 lockInterruptibly、tryLock(timeout),构造时传 true 就是公平锁,还可以绑定多个 Condition。synchronized 同样可重入,而且由 JVM 自动释放;ReentrantLock 必须在 finally 里 unlock,否则异常时锁会泄漏。没有上述特殊需求时,优先用更简洁的 synchronized。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。