6.5 每日总结(synchronized和Lock有什么区别 ? )

第一,语法层面上:

  • synchronized是关键字,源码在jvm中, 底层由C++实现,退出同步代码块会自动释放锁

  • Lock是接口,源码由jdk提供的,由Java实现,需要手动调用unlock方法释放锁。

第二,功能层面上:

  • 两者都是悲观锁,都具备互斥,同步,可重入

  • Lock 提供了许多 synchronized 不具备的功能,例如获取等待状态、公平锁、可打断、可超时。同时Lock 可以实现不同的场景,如 ReentrantLock, ReentrantReadWriteLock

第三,性能层面上:

  • 在没有竞争时,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖

  • 在竞争激烈时,Lock 的实现通常会提供更好的性能

posted @ 2025-06-12 23:51  笠大  阅读(13)  评论(0)    收藏  举报