阿里巴巴Java面试题及详细答案(真实面经版).docxVIP

  • 1
  • 0
  • 约1.1万字
  • 约 10页
  • 2026-06-06 发布于河北
  • 举报

阿里巴巴Java面试题及详细答案(真实面经版).docx

阿里巴巴Java面试题及详细答案(真实面经版)

一、Java基础(一面必问,侧重基础落地)

1.说说synchronized与Lock的区别,实际开发中怎么选?

答案:核心区别就3点,结合实际使用场景说更清楚,不搞虚的:

1.锁的特性:synchronized是JVM原生的,自动释放锁(无论正常执行还是抛异常),不用手动关;Lock是JavaAPI层面的(如ReentrantLock),必须手动调用unlock(),一般放finally里,不然会造成死锁。

2.灵活性:synchronized是不可中断、非公平锁(默认),不能尝试获取锁;Lock可以中断(lockInterruptibly())、可以尝试获取锁(tryLock()),还能指定公平/非公平锁,灵活性更高。

3.性能:JDK1.6之后synchronized做了优化(偏向锁、轻量级锁、锁升级),性能和Lock差距不大;但高并发场景下,Lock的tryLock()能避免线程长时间阻塞,比synchronized更合适。

实际选型:简单场景(如单例、简单方法同步)用synchronized,代码简洁不易出错;高并发、需要灵活控制锁(如超时获取、中断)的场景(如订单接口、库存扣减),用ReentrantLock。另外,读多写少的场景,用ReadWriteLock(ReentrantReadWriteLock),比

文档评论(0)

1亿VIP精品文档

相关文档