synchronized 锁有三个级别:偏向锁、轻量级锁、重量级锁,性能从左到右逐渐降低
- 如果就一个线程对同一对象加锁,此时就用偏向锁
- 又来一个线程,与前一个线程交替为对象加锁,但只是交替,没有竞争,此时要升级为轻量级锁
- 如果多个线程加锁时发生了竞争,必须升级为重量级锁
【说明】
- 自 java 6 开始对 synchronized 提供了锁升级功能,之前只有重量级锁
- 但从 java 15 开始,偏向锁被标记为已废弃,将来会移除(因为实际带来的性能提升不明显,某些情况下反而影响性能)
synchronized 锁有三个级别:偏向锁、轻量级锁、重量级锁,性能从左到右逐渐降低
【说明】