• 锁优化概念


    目的是为了在线程之间更高效的共享数据,以及解决竞争问题,挺高程序的执行效率。JDK中做了如下优化:

    自旋锁:

    因为在互斥同步的时候,挂起线程和恢复线程的操作都需要转入内核态中执行,很大的影响性能。有时候对共享数据的锁定只会持续很短的时间,在这段时间内去挂起和恢复线程很浪费资源。所以在一个线程占用共享变量时,其他线程此时不值得挂起,可以让其他线程处于忙循环(自旋)状态,等上一个线程释放锁后,其他线程再去竞争锁。JDK1.6中默认开启。

    锁消除:

    是指虚拟机在即时编译器在运行时,有些代码做了同步操作,但是检测到根本不可能会出现共享数据竞争的情况,所以会对加上的锁进行消除。

    锁粗化:

    一般情况下,我们尽量把同步块作用范围限制的尽可能小。若在一段代码中频繁的加锁解锁,其性能会大大降低,这样我们可以扩大锁的作用域,这样只需要加一次锁就可以了。

    轻量级锁:

    传统的锁机制称为“重量级”锁。轻量级锁是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗,但无法替代重量级锁。

    偏向锁:

    目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。

  • 相关阅读:
    Linux配置Nginx负载均衡
    linux虚拟机ping不通主机和外网(包括刚装系统遇到的一些问题)
    MySQL的主从复制
    ubuntu下安装php
    ubuntu下sudo apt-get update Sources 404 Not Found 解决方法
    java 中类的加载顺序
    PHP生成各种验证码和Ajax验证
    PHP算法之二分查找和顺序查找
    ThinkPHP中SQL调试方法
    mysql 处理中文乱码问题
  • 原文地址:https://www.cnblogs.com/wwzyy/p/10097358.html
Copyright © 2020-2023  润新知