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的所有权,即尝试获得对象的锁。

相关内容

热门资讯

安卓系统最高端的机型,揭秘最新... 你有没有想过,在这个科技飞速发展的时代,拥有一款安卓系统最高端的机型是多么酷炫的事情啊!想象走在街头...
安卓系统设置苹果主题,苹果主题... 你有没有想过,让你的安卓手机也来个“苹果风”?没错,就是那种简洁、优雅的苹果系统主题。今天,就让我带...
安卓系统sql服务器,Andr... 你有没有想过,你的安卓手机里那些看似简单的应用,其实背后有着复杂的数据库支撑呢?没错,今天就要来聊聊...
自带安卓系统的儿童相机,自带安... 最近市面上出现了一种特别有趣的儿童相机,自带安卓系统,简直让人眼前一亮!想象你家的小宝贝拿着一个功能...
沃尔沃sensus系统属于安卓... 你有没有想过,沃尔沃的Sensus系统是不是安卓系统呢?这可是个让人好奇的问题,毕竟现在汽车智能化越...
安卓7的系统框架,全面解析与深... 你知道吗?最近我在手机上发现了一个超级酷的东西,那就是安卓7的系统框架。这可不是一般的框架哦,它可是...
安卓怎么刷机老系统,从老系统升... 你有没有想过,你的安卓手机是不是已经有点儿“老态龙钟”了呢?别急,别急,今天就来给你详细讲解怎么给安...
安卓网络盒子进不去系统,故障排... 最近是不是你也遇到了安卓网络盒子进不去系统的问题?别急,让我来帮你一探究竟,找出解决之道!一、问题现...
宝马后排安卓系统改装,驾驭未来... 你有没有想过,你的宝马后排竟然也能变身成为移动的智能小天地?没错,就是那个让你在驾驶过程中享受舒适的...
带键盘的安卓系统手机,带键盘手... 你有没有想过,为什么你的手机屏幕上那些密密麻麻的按键让你爱不释手?没错,说的就是那些带键盘的安卓系统...
登录游戏显示安卓旧系统,体验复... 最近是不是有不少小伙伴在登录游戏时遇到了一个小麻烦?那就是安卓旧系统的问题。没错,就是那种让你登录游...
原神怎么转回安卓系统,享受原生... 你是不是在玩原神的时候,不小心把账号绑定到了iOS系统,现在想把它转回安卓呢?别急,今天就来给你详细...
苹果和安卓谷歌系统,两大移动生... 你有没有发现,现在手机市场上,苹果和安卓谷歌系统就像是一对“欢喜冤家”,各有各的粉丝,各有各的拥趸。...
安卓系统文本替换在哪里,安卓系... 你有没有遇到过这种情况:在用安卓手机打字的时候,突然想替换掉某个词,结果怎么也找不到那个神奇的“文本...
安卓系统去弹窗广告,Andro... 你是不是也和我一样,对安卓手机上的弹窗广告头疼不已?那些突然冒出来的广告,真是让人心烦意乱。别急,今...
安卓9系统小米桌面,小米桌面功... 亲爱的手机控们,你是否也像我一样,对手机系统的新鲜玩意儿充满好奇?今天,就让我带你一起探索安卓9系统...
realmex是安卓什么系统,... 亲爱的读者,你是否曾好奇过,那些在我们手中舞动的手机,它们究竟运行着怎样的操作系统?今天,就让我带你...
安卓系统微信没有升级,功能体验... 最近发现了一个让人有点小郁闷的事情,那就是安卓系统的微信竟然没有升级!这可真是让人有点摸不着头脑,毕...
国际版安卓tv系统,探索国际版... 亲爱的读者们,你是否曾想过,家里的电视也能像智能手机一样,轻松下载应用、畅游网络世界?今天,就让我带...
安卓系统转苹果电脑系统,系统转... 你有没有想过,从安卓系统跳转到苹果电脑系统,这不仅仅是一次操作系统的切换,更像是开启了一段全新的数字...