面试题-- 什么是偏向锁

article/2025/10/21 15:37:40

所谓的偏向,就是偏心,即锁会偏向于当前已经占有锁的线程 。

大部分情况是没有竞争的(某个同步块大多数情况都不会出现多线程同时竞争锁),所以可以通过偏向来提高性能。即在无竞争时,之前获得锁的线程再次获得锁时,会判断是否偏向锁指向我,那么该线程将不用再次获得锁,直接就可以进入同步块。

偏向锁的实施就是将对象头Mark的标记设置为偏向,并将线程ID写入对象头Mark 

当其他线程请求相同的锁时,偏向模式结束

JVM默认启用偏向锁 -XX:+UseBiasedLocking 

在竞争激烈的场合,偏向锁会增加系统负担(每次都要加一次是否偏向的判断) 

代码例子

public class TestUseBisaedUsing {public static List<Integer> numberList = new Vector<Integer>();public static void main(String[] args) throws InterruptedException {long begin = System.currentTimeMillis();int count = 0;int startnum = 0;while (count < 10000000) {numberList.add(startnum);startnum += 2;count++;}long end = System.currentTimeMillis();System.out.println(end - begin);}

Vector是一个线程安全的类,内部使用了锁机制。每次add都会进行锁请求。上述代码只有main一个线程再反复add请求锁。

使用如下的JVM参数来设置偏向锁:

-XX:+UseBiasedLocking -XX:BiasedLockingStartupDelay=0

BiasedLockingStartupDelay表示系统启动几秒钟后启用偏向锁。默认为4秒,原因在于,系统刚启动时,一般数据竞争是比较激烈的,此时启用偏向锁会降低性能。

由于这里为了测试偏向锁的性能,所以把延迟偏向锁的时间设置为0。

可以看到运行时间为423ms

 

下面关闭偏向锁:

-XX:-UseBiasedLocking

 输出699ms

 一般在无竞争时,启用偏向锁性能会提高5%左右。


http://chatgpt.dhexx.cn/article/cUcLUVOC.shtml

相关文章

Java中的偏向锁,轻量级锁, 重量级锁解析

文章目录 参考文章Java 中的锁一些先修知识synchronized 关键字之锁的升级&#xff08;偏向锁->轻量级锁->重量级锁&#xff09;无锁 -> 偏向锁偏向锁的撤销&#xff08;Revoke&#xff09;偏向锁的批量再偏向&#xff08;Bulk Rebias&#xff09;机制偏向锁 -> 轻…

条件分布

1.离散型&#xff1a; 例1&#xff1a; 2.连续型&#xff1a;

关于多元正态分布的条件分布的证明

之前在机器学习 cs229学习笔记3 (EM alogrithm,Mixture of Gaussians revisited & Factor analysis )中直接给出了多元正态分布的条件概率 正好今天上课讲了多元正态分布的内容&#xff0c;但没有涉及条件概率&#xff0c;所以下来baidu了一下&#xff0c;找到一个不错的pp…

条件分布函数(离散-条件分布律)

一、离散随机变量的条件分布函数 1.0、条件分布函数定义 1.1、例 1.1.1、例1 1.1.2、例2 二、连续型随机变量的条件分布函数 2.1、连续随机变量的条件分布函数 2.2、条件概率密度函数

第三章 多维随机变量及其分布 3.3 条件分布

第三章 多维随机变量及其分布 3.3 条件分布 文章目录 第三章 多维随机变量及其分布 3.3 条件分布离散型随机变量的条件分布连续型随机变量的条件分布 离散型随机变量的条件分布 例&#xff1a; 求&#xff1a; 离散型的直接套条件概率的公式就行了。 连续型随机变量的条件分布…

~《概率论》~条件分布

《概率论》条件分布 文章目录 ~《概率论》~条件分布一、离散型随机向量的条件分布1.1、定义1.2、性质 二、连续型随机向量的条件分布2.1、定义2.2、性质 一、离散型随机向量的条件分布 1.1、定义 1.2、性质 二、连续型随机向量的条件分布 2.1、定义 2.2、性质

MCMC算法--Gibbs采样2:多元高斯分布的边际分布与条件分布推导

因为在下篇博客中会介绍Gibbs采样&#xff0c;代码示例用到的是多元高斯分布&#xff0c;所以对条件分布&#xff0c;边际分布公式必须写出来&#xff0c;所以博主整理了下。 参考文献为&#xff1a;http://fourier.eng.hmc.edu/e161/lectures/gaussianprocess/node7.html 由…

条件高斯分布

多元高斯分布的一个重要性质是如果两个变量集是联合高斯分布&#xff0c;那么其中一个基于另一个变量集上的条件分布仍然是高斯分布。边缘高斯分布也有类似结论。 考虑第一种情形的条件高斯分布。假设 X 是一个满足高斯分布 的 D 维向量&#xff0c;我们把 X 分作两个子集 Xa 和…

【概率论】3-6:条件分布(Conditional Distributions Part I)

原文地址1&#xff1a;https://www.face2ai.com/Math-Probability-3-6-Conditional-Distributions-P1转载请标明出处 Abstract: 首先介绍随机变量的条件分布&#xff0c;随后介绍随机变量条件分布下的乘法法则&#xff0c;贝叶斯公式和全概率公式 Keywords: Discrete Conditio…

概率论与数理统计(3.3)二维随机变量条件分布

这个条件分布主要只针对二维的 一、离散型随机变量的条件分布 同理固定一个X为一个常数则可得Y的条件分布律 **注&#xff1a;**离散型的求在什么条件下X或Y的条件分布律&#xff0c;知道他们的联合分布律很重要. 1&#xff09; 观察这个公式。 注&#xff1a;必须知道P{X1}的…

多元正态分布条件分布公式总结

假设X是有两个随机向量组成 其中 假设X服从多元高斯分布其中 多元正态分布

【概率论】二维随机变量:联合分布律、边缘分布律和条件分布律之间的关系

摘要&#xff1a;本文主要介绍二维随机变量的联合分布律、边缘分布律和条件分布律之间的关系&#xff0c;并以矿山事故为例&#xff0c;强化对三者关系的认识。 一、联合分布律、边缘分布律和条件分布律之间的关系 1、若已知(X, Y)的联合分布率 > 可以求出X的边缘分布律和…

用最简洁的方法证明多元正态分布的条件分布

在证明高斯-马尔科夫随机过程的性质的过程中&#xff0c;遇到了多元正态分布的条件分布的证明&#xff0c;百度发现条件分布的很多证明方法写的极其麻烦&#xff0c;所以自己写了一个。 实际上多元随机变量的公式证明一般用矩阵的方法处理&#xff0c;这里就是采用这种方法&…

联合分布、条件分布、边缘分布还有贝叶斯公式

https://blog.csdn.net/zgcr654321/article/details/85201614?utm_mediumdistribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase&depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase 文章目录 联合概率及其分布、边缘概率及其分布、…

概率论-3.5 条件分布与条件期望

离散随机变量的条件分布&#xff1a; 二位随机变量(X,Y)的联合分布列&#xff1a;pijP(Xxi,Yyj) P(Yyj)Sum(P(Xxi,Yyj))&#xff0c;对xi累加 P(Xxi)Sum(P(Xxi,Yyj))&#xff0c;对yj累加 条件分布列&#xff1a; pi | j P(Xxi | Yyj)P(Xxi,Yyj) / P(Yyj)pij / pj pj | i P(Yyj…

3.3 二维随机变量条件分布

学习目标&#xff1a; 要学习二维随机变量的条件分布&#xff0c;我可能会采取以下步骤&#xff1a; 复习边缘分布和联合分布&#xff1a;首先需要了解二维随机变量的边缘分布和联合分布的概念以及相应的公式。 复习条件概率&#xff1a;学习条件概率的定义和计算公式&#x…

NPOI 下载

https://www.nuget.org/packages/NPOI/

NPOI 第一篇 NPOI的下载、引用、基本使用

前言 总渴望去拥有那些自己没有的东西&#xff0c;比如经验、能力&#xff1b;但自己拥有的更为重要的东西&#xff0c;却如此的不珍惜&#xff0c;比如青春。所以啊&#xff0c;趁着青春多写点代码&#xff0c;就能让自己早一步去渴望重新拥有青春了。 有需要的小伙伴可以直…

NPOI的基本使用

在NPOI初识中简了解了下NPOI的简介和优势&#xff0c;接下来看一下如果下载使用。新建一个小的Demo&#xff0c;如下&#xff1a; 第一步&#xff0c;新建一个控制台应用程序&#xff1a; 第二步&#xff0c;利用Nuget获取NPOI, 这里引用的2.4.1最稳定版本&#xff1a; 引用添…