📚 分类
多线程
🕵🏽‍♀️ 问题描述
synchronized和Lock有什么区别?
👨‍🏫 问题讲解
❒ synchronized和Lock有什么区别?

▣ 语法层面
✔ synchronized是关键字,源码在jvm 中,用 c++ 语言实现
✔ Lock 是接口,源码由jdk 提供,用java 语言实现
✔ 使用 synchronized 时,退出同步代码块锁会自动释放,而使用 Lock 时,需要手动调用 unlock 方法释放锁

▣ 功能层面
✔ 二者均属于悲观锁、都具备基本的互斥、同步、锁重入功能
✔ Lock 提供了许多 synchronized 不具备的功能,例如公平锁、可打断、可超时、多条件变量
✔ Lock 有适合不同场景的实现,如 ReentrantLock,ReentrantReadWriteLock(读写锁)

▣ 性能层面
✔ 在没有竞争时,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖
✔ 在竞争激烈时,Lock 的实现通常会提供更好的性能
🏳️‍🌈 问题总结
语法,功能,性能
📖 问题信息
📈 浏览次数:9 | 📅 更新时间:2025-12-01 22:02:28
📦 创建信息
🏷️ ID:110 | 📅 创建时间:2024-12-09 17:21:11