zoukankan      html  css  js  c++  java
  • 锁优化概念

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

    自旋锁:

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

    锁消除:

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

    锁粗化:

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

    轻量级锁:

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

    偏向锁:

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

  • 相关阅读:
    零基础学python-2.24 一些常用函数
    零基础学python-2.23 模块
    零基础学python-2.22 回到我们的游戏 加入文件和异常
    tcp协议:三次握手四次挥手详解---总结
    centos7安装jmeter + ant
    centos7安装jenkins
    centos7安装tomcat
    centos7安装jdk (jdk-8u161-linux-x64.tar.gz 和 java-1.8.0-openjdk* 介绍)
    波浪场景jp@gc
    阶梯场景jp@gc
  • 原文地址:https://www.cnblogs.com/wwzyy/p/10097358.html
Copyright © 2011-2022 走看看