6.5 每日总结(synchronized和Lock有什么区别 ? )
第一,语法层面上:
-
synchronized是关键字,源码在jvm中, 底层由C++实现,退出同步代码块会自动释放锁
-
Lock是接口,源码由jdk提供的,由Java实现,需要手动调用unlock方法释放锁。
第二,功能层面上:
-
两者都是悲观锁,都具备互斥,同步,可重入
-
Lock 提供了许多 synchronized 不具备的功能,例如获取等待状态、公平锁、可打断、可超时。同时Lock 可以实现不同的场景,如 ReentrantLock, ReentrantReadWriteLock
第三,性能层面上:
-
在没有竞争时,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖
-
在竞争激烈时,Lock 的实现通常会提供更好的性能

浙公网安备 33010602011771号