java偏向锁的介绍和实例用法
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇内容主要讲解"java偏向锁的介绍和实例用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java偏向锁的介绍和实例用法"吧!说明1、要判断对象的Ma
千家信息网最后更新 2025年02月23日java偏向锁的介绍和实例用法
本篇内容主要讲解"java偏向锁的介绍和实例用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java偏向锁的介绍和实例用法"吧!
说明
1、要判断对象的MarkWord是否属于偏向模式。
如果不属于,进入轻量级锁判断逻辑。否则,继续下一步判断。
2、判断当前请求锁的线程ID是否与偏向锁本身记录的线程ID一致。
如果一致,继续下一步判断,如果不一致,跳转到步骤4;
3、判断是否需要重偏向。
重偏向逻辑将在下一节解释批量重偏向和批量撤销。如无需,直接获得偏向锁;
4、使用CAS算法更改对象的MarkWord。
将线程ID部分转换为线程ID,若更换成功,则重偏完成,获得偏向锁。若失败,则表明有多线程竞争,升级为轻量级锁。
实例
public class Demo2 { Object o = new Object(); //.c 文件打印出java threaid 对应的os threadid public native void tid(); static { System.loadLibrary("TestThreadNative"); } public static void main(String[] args) { //打印出主线程 System.out.println("java---java---java---java---java---java---java---java---java---"); Demo2 example4Start = new Demo2(); example4Start.start(); } public void start() { Thread t1 = new Thread() { @Override public void run() { while (true) { sync(); } } }; Thread t2 = new Thread() { @Override public void run() { while (true) { sync(); } } }; t1.setName("t1"); t2.setName("t2"); t1.start(); } public void sync() { synchronized (o) { // java threadid 是jvm给的线程id 并不是真是的os 对应的线程id // System.out.println(Thread.currentThread().getId()); //获取java thread 对应的真实的os thread 打印出id tid(); } }}
到此,相信大家对"java偏向锁的介绍和实例用法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
线程
实例
一致
内容
对象
轻量
轻量级
逻辑
学习
实用
更深
成功
兴趣
实用性
实际
操作简单
文件
方法
更多
朋友
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
美团商家版无法连接到服务器
中国银行手机服务器
数锐网络技术杭州
货车帮加油服务器繁忙
泗洪巨型网络技术诚信服务
标准服务器机房温度
apex steam服务器炸了
怎么把数据库复制发给别人
学生网络安全教育资料
sql数据库备份用户名
广东壹网网络技术
邵阳服务器维保
excel 表头插入数据库
天津西青区网络安全培训班
数据库连接本地服务
深圳宇衡互联网科技
网络技术和校园生活感悟
数据库快速定位问题
麒麟科技代驾软件开发
盲人软件开发公司口号
中国如何应对网络安全风险
吉付通网络技术怎么样
数据库中怎样修改年份
abap逻辑数据库
微信小程序的服务器
版权局 计算机软件开发能力
tp网站上传服务器404
数据库中的实体图怎么画
开学季网络安全
利诺网络安全