Java并发机制的底层实现原理
admin
2024-01-20 07:16:22
0

目录

volatile

synchronized


volatile

实现原理

volatile是轻量级的synchronized,它在多处理器中保证了共享变量的“可见性”。

什么是可见性?当一个线程修改一个共享变量时候,另一个线程能读到这个修改的值。

volatile如何保证可见性?

问得好,这就是实现的关键了。有volatile变量修饰的共享变量进行写操作的时候会多出第二行汇编代码,也就是Lock前缀的指令。lock前缀的指令在多核处理器下会引发两件事情。

  1. 将当前处理器缓存行的数据写回到系统内存。
  2. 这个写回内存的操作会使其他CPU里缓存了该地址的数据无效。

大致意思可以理解为如果声明了volatile的变量进行写操作,JVM就会向处理器发送一条Lock前缀的指令,将这个变量所在缓存行的数据写回到系统内存。但是与此同时,其他处理器的值还是旧的,所以,在多处理器下,为了保证各个处理器的缓存是一致的,就会实现缓存一致性协议。每个处理器通过嗅探在总线上传播的数据检查自己的缓存值是不是过期了,如果发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效。这样在处理修改操作的时候,会重新取系统内存中获取。

synchronized

java中的每一个对象都可以作为锁。

对于普通同步方法:锁是当前实例对象。

对于静态同步方法:锁是当前类的Class对象。

对于同步方法块:锁是synchronized括号里配置的对象。

实现原理

JVM给予进入和退出Monitor对象来实现方法同步和代码块同步。代码块同步是使用monitorenter和monitorexit指令实现的。monitorenter指令是在编译后插入到同步代码块的开始位置,而monitorexit是插入到方法结束处和异常处,JVM要保证每个monitorenter必须有对应的monitorexit与之配对。任何对象都有一个monitor与之关联,当且一个monitor被持有后,它将处于锁定状态。线程执行到monitorenter指令时,将会尝试获取对象所对应的monitor的所有权,即尝试获得对象的锁。

相关内容

热门资讯

安卓系统壁纸设计图片,创意与技... 亲爱的手机控们,你是否曾为安卓系统的壁纸设计而驻足欣赏?那些精美的图片,是不是让你忍不住想要一探究竟...
安卓系统real插件下载,功能... 你有没有发现,安卓手机上的那些实用小插件,简直就像给手机穿上了魔法衣,让操作变得轻松又有趣呢?今天,...
健康系统要更新吗安卓 你有没有发现,随着智能手机的普及,我们的健康系统好像也该来个“大变身”了呢?尤其是安卓系统,它可是我...
安卓系统打不开腾讯视频,原因排... 最近是不是你也遇到了这样的烦恼:安卓系统下的手机突然打不开腾讯视频了?别急,让我来帮你一探究竟,找出...
如何把安卓改成iphone系统... 你是不是也和我一样,对安卓手机已经厌倦了,想要换一台iPhone体验一下苹果的生态系统呢?别急,今天...
安卓系统关羽怎么设置,请提供更... 你有没有发现,安卓手机上的系统设置真是五花八门,让人眼花缭乱?今天,我就来给你详细介绍怎么在安卓系统...
自己做安卓系统车机,智能驾驶新... 亲爱的车友们,你是否厌倦了那些千篇一律的车载系统?想要给你的爱车换上独一无二的“外衣”?那就跟我一起...
微信禁止安装安卓系统,引发行业... 你知道吗?最近微信可是闹出了一个大新闻,那就是微信禁止安装安卓系统。这可真是让人大跌眼镜啊!下面,就...
车机用安卓系统好吗,便捷体验与... 你有没有想过,你的爱车是不是也该升级一下智能系统呢?现在市面上很多车机都开始使用安卓系统了,那么,车...
怎么获取电池信息安卓系统,轻松... 手机里的电池信息,是不是总让你好奇又困惑呢?想知道怎么轻松获取安卓系统的电池信息?那就跟着我一起探索...
车机更换安卓系统 你有没有发现,最近你的车机系统有点儿卡,反应慢得像蜗牛爬?别急,今天就来给你支个招——车机更换安卓系...
安卓手机系统连接carplay... 你有没有想过,你的安卓手机也能和苹果的车载系统CarPlay无缝连接呢?没错,就是那个让iPhone...
为什么安卓系统是几根,从几根代... 你有没有想过,为什么安卓系统总是被戏称为“几根”呢?这可不是随便说说,这里面可是有故事的呢!让我们一...
安卓8.0系统可以降吗,能否顺... 你手上的安卓8.0系统是不是已经有点儿过时了呢?别急,今天就来给你揭秘安卓8.0系统到底能不能降级,...
安卓系统如何开启nfc,安卓系... 你有没有想过,你的安卓手机里隐藏着一个小秘密——NFC功能!没错,就是那个可以让你轻松完成移动支付、...
安卓ios定制系统是什么系统,... 你有没有想过,为什么你的手机那么聪明,能帮你找到最近的咖啡店,还能帮你管理日程?这都要归功于那些隐藏...
小米安卓系统升级7.0,畅享智... 你知道吗?最近小米手机界可是热闹非凡呢!小米安卓系统升级7.0的消息一出,瞬间吸引了无数米粉的目光。...
安卓p系统长图,功能升级与界面... 你有没有发现,最近你的安卓手机是不是变得有点不一样了?没错,就是那个神秘的安卓P系统!今天,就让我带...
安卓手机运行iPhone系统 你知道吗?最近在科技圈里,有一个话题可是引起了不小的轰动呢!那就是安卓手机竟然能运行iPhone系统...
安卓系统多任务打不开,安卓系统... 你是不是也遇到了这个让人头疼的问题?安卓系统的多任务功能突然打不开了,是不是感觉手机瞬间失去了灵魂?...