多线程
synchronized和Lock有什么区别?
❒ synchronized和Lock有什么区别? ▣ 语法层面 ✔ synchronized是关键字,源码在jvm 中,用 c++ 语言实现 ✔ Lock 是接口,源码由jdk 提供,用java 语言实现 ✔ 使用 synchronized 时,退出同步代码块锁会自动释放,而使用 Lock 时,需要手动调用 unlock 方法释放锁 ▣ 功能层面 ✔ 二者均属于悲观锁、都具备基本的互斥、同步、锁重入功能 ✔ Lock 提供了许多 synchronized 不具备的功能,例如公平锁、可打断、可超时、多条件变量 ✔ Lock 有适合不同场景的实现,如 ReentrantLock,ReentrantReadWriteLock(读写锁) ▣ 性能层面 ✔ 在没有竞争时,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖 ✔ 在竞争激烈时,Lock 的实现通常会提供更好的性能
语法,功能,性能