java偏向锁的介绍和实例用法
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容主要讲解"java偏向锁的介绍和实例用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java偏向锁的介绍和实例用法"吧!说明1、要判断对象的Ma
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
网络安全产业园在哪里
mc服务器300人多少钱
西子奥蒂斯服务器no110ac
测试数据库是否
软件开发费可以免税嘛
少儿网络安全培训
我的世界马里奥服务器
浪潮5280服务器u盘启动
软件开发缩写术语
深圳市迈云互联网科技有限公司
机器人软件开发多少钱
机房虚拟化网络技术
长安战役网络安全
鞍山市网络安全宣传
服务器上代码被删除了怎么还原
数据库技术11年4月答案解析
德令哈软件开发培训学校
校园网络安全宣传知识心得
nas存储服务器价格
香港什么大学有网络安全硕士
数据库删除子节点
3ds如何进网络安全模式
千杉网络技术发展有限公司
承载网络技术支撑是干嘛的
海康平台的服务器id从哪里看
软件开发变更频繁
碧蓝航线更新后服务器变少了
简氏数据库官网
青少年如何对待网络安全
软件开发测试男友蛋糕