• synchronized的锁策略及优化过程


    来了解synchronized的锁策略前,需要先了解有什么类型的锁。

    锁类型


    锁之间的联系


    synchronized的锁策略

    自适应的意思是synchronized会根据锁冲突的情况来选择是变成轻量级锁还是重量级锁,乐观锁还是悲观锁,自旋锁还是挂起等待锁。

    • synchronized是乐观锁或悲观锁,根据自适应决定
    • synchronized是轻量级锁部分由自旋锁完成,重量级锁部分由挂起等待锁完成
    • synchronized是自旋锁或挂起等待锁,根据自适应决定
    • synchronized是非公平锁
    • synchronized是互斥锁
    • synchronized是可重入锁

    synchronized优化过程(自适应过程)

    synchronized的优化过程是根据内部判定锁竞争的激烈程度来决定的

    1. 无锁
    2. 偏向锁,真正意义上不算拥有锁,只是先标记,在没有其他线程来竞争前并没有真正上锁,但若真正到了有其他线程来竞争的时候,就会立马加上锁
    3. 轻量级锁,synchronized内部会判断锁竞争是否激烈,当锁竞争还不大激烈的时候就会上轻量级锁
    4. 重量级锁,synchronized判断竞争激烈时会变为重量级锁

    其他的锁优化过程

    StringBuffer类型内部是有synchronized的,但当判断到StringBuffer都是在同一线程中的时候,就不会加锁了。

  • 相关阅读:
    静态成员函数与回调函数
    freertos简单串口
    【oracle数据库】最全最详细的数据库查询
    学习二叉树,Java实现
    多重嵌套循环
    MySQL高可用之MHA集群
    C++模板介绍
    彻底理解线程
    MyBatis-PLUS使用教程
    研发merge请求合并代码触发检测(gitlab + jenkins)
  • 原文地址:https://blog.csdn.net/Green_756/article/details/127605751