当前位置:刘伯温预言 > 认知映射 >

R大有时会颠覆你Java的认知

  关于volatile变量的内存可见性,我在JVM群中抛出了一个问题,然后我的一些认知就被颠覆了。

  请教一个问题,a,b,c三个变量,其中c是volatile的,a,b是普通变量, a = 1, b = 2, c = 3, c写入之后,a,b的值也会被刷入缓存吗,还是c写入之前所有在cpu缓存的数据都会被刷入内存,还是只刷入和c在同一个缓存行的数据?

  你们要按happens before来考虑这种问题,不要整天无谓想着擦车(cache),Java的修正过的内存模型其实基本点很简单,同一线程内的副作用按程序顺序发生,所以a、b、c的赋值如果是在同一线程内按这个顺序写的,实际执行就要按照这个顺序发生(至少表象上要按照这个顺序;在程序无法感知顺序差异时可以作弊)

  JVM实现的时候是要把这些概念映射下去的(这里的概念应该就是happens before),但是当你在思考高层程序语义的时候却拿不合适的低层语义去解释就很别扭,映射下去的办法就是先有高层语义,然后看具体硬件上提供了哪些原语,然后再去实现。例如说在SPARC上它默认是TSO(total store order)的,在上面需要手工做的同步操作就很简单。

  JIT的时候会去查操作数的属性,如果是volatile会在读写操作附近生成barrier的中间表示,最终barrier中间表示会变成什么指令,那要根据具体的机器,Memory consistency是一个spec,各种硬件系统包括cache都是实现的细节。

  总结起来,我这个问题问的不好,没水准,问题直接从jmm跳到了硬件具体实现,中间还隔着一层硬件的memory model。

  所以缓存到底怎么刷,不同的CPU、不同厂商、不同型号实现可能都不一样,一个人想了解所有似乎是个不可能的任务,也不实用,只需要搞清楚JMM层面的东西就OK,管它到底怎么刷。

  此文为转载: 转载地址放在链接中:原文发表地址 整理 by 微凉季节 评价:从多线程引出处理器内存,再杀到总线仲裁和总线事务,精彩,行云流水,纵深直入,势不可挡,直击重点,漂亮! 从Java超越native杀到c++直击汇编,再从汇编杀到硬件处理器总线 牛逼哄哄简直是黑白通...

  Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现 同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程...

  并发系列的文章都是根据阅读《Java 并发编程的艺术》这本书总结而来,想更深入学习的同学可以自行购买此书进行学习。 一 锁的内存语义 众所周知,锁可以让临界区互斥执行。但锁的另一个同样重要的功能却常常被大家忽略:锁的内存语义。 1. 锁的释放 - 获取建立的 happen...

  昨夜星辰昨夜风,画楼西畔桂堂东。 身无彩凤双飞翼,心有灵犀一点通。 隔座送钩春酒暖,分曹射覆蜡灯红。 嗟余听鼓应官去,走马兰台类转蓬。

  梦想,一个多么矫情的词语。 你看那个人,食不果腹,还谈梦想; 你看那个人,居无定所,还谈梦想; 你看那个人,颠沛流离,还谈梦想 ; ...... 是啊,不知从什么时候,梦想成为奢侈品,可望而不可及。 快看,那个孩子才十岁,就这么有想法,他是一个有梦想的人; 快看,那个人已过...

  一组组长温枫枫分享: 1、真正明白了行动三角形的含义和用法,尤其是排程时需要思考三个问题:(1)我要不要做?(2)我要的结果是什么?(3)下一步行动是什么? 在排程过程中还存在不足,无法真正做到都提问自己三个问题,需要以后多加改进。 2、我要得到什么,就先帮助别人实现什么。...

  朋友昨天跟我讲起,她的银行同事,个个都是富二代听起来有些夸张,但这是事实。手带16万戒指,豪车豪宅。出门购物不问价的生活方式,让普通家庭出身的朋友和我确实难以接受。艳羡别人出生就有的荣华富贵,有着可能我们需要奋斗一辈子都赶不上的家境。 前几天读了一篇文章,大概是...

  昨晚临睡前,女儿没有像往常一样要亲亲抱抱才睡,而是自己背对着我,感觉她的异常,就搂着她过来,问她:妈妈才出差一天就不要抱抱了?长大啦? 女儿马上转过来,紧紧搂着我,小声抽泣。我问她怎么了?她说没事,就是想哭一下。她心里有事不肯说,我只能静静地抱着她拍拍她,等她平静下来,对她...

http://albacheval.com/renzhiyingshe/243.html
点击次数:??更新时间2019-06-16??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】