Synchronized锁升级

Synchronized锁升级的过程是性能和安全性的一个平衡,而性能的重要体现就是由用户态到内核态切换的过程。
锁升级过程简述

  1. 无锁:对象刚创建的时候,默认是无锁状态;
  2. 偏向锁:只有一个线程去尝试获取锁的时候,此时生成的是偏向锁;
  3. 轻量级锁:在竞争不太激励的情况下,线程会使用CAS自旋的方式去获取锁,并且自旋的最大次数是10次。
  4. 重量级锁:线上就会被挂起,进入Block状态。


    自用-常用分析图-Synchronized锁升级.drawio.png

用户态与内核态

  1. 用户态:进程在用户控件运行,可以进行基本的计算和访问内存等操作。
  2. 用户态:进程如果需要进行硬件访问、系统调用等,就需要进入内核控件进行,也就是内核态。在内核下就可以进行所有的系统调用,例如I/O操作等。
  3. 二者的切换:用户态进入内核态的过程中需要进行上下文切换,即将原来进程的CPU状态保存起来,然后加载进程的CPU状态,这个过程需要耗费一定的时间开销。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容