java偏向锁的介绍和实例用法
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"java偏向锁的介绍和实例用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java偏向锁的介绍和实例用法"吧!说明1、要判断对象的Ma
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
义乌物流软件开发设计
杭州伙计网络技术有限公司
派出所网络安全排查整治情况汇报
校园网网络安全的开题报告
安全可控服务器价格
无锡idc服务器租用
mongodb数据库or
中国的网络安全大赛有哪些
esg数据库公司
知乎数据库结构
k8s持久化存储数据库
软件开发公司的预算
一个服务器部署多个项目可行吗
数据库技术复习题
科技苑养鸡与上互联网
王者腾讯服务器是有多少个
怎样理解软件开发生命周期
双屏互动触摸软件开发
工盒网络技术有限公司怎么样
小程序请求云服务器里的商品
综合布线及网络技术
深圳海德堡网络技术有限公司
魔兽服务器黑铁
软件开发字体使用
电梯蓝牙服务器app
服务器证书管理
凤巢网络技术有限公司
许可证服务器关机或未响应
linux服务器内外网搭建
网络安全周时间固定吗