synchronized实现过程:

1.Java代码:synchronized

2.字节码层级:monitorenter,monitorexit

3.执行过程中自动升级(偏向->自旋->重量级锁)

4.cpu汇编层级:lock comxchg

上图为双核cpu的内部构造,两个核共享一个三级缓存

超线程:一个ALU对应多个PC,一个核里面有两个pc,线程切换时不用存之前线程的数据,

直接两个pc记录运行到哪了,切换节约时间。

从主存读数据的时候,按块读(局部性原理)

这个块叫cache line(缓存行),一行数据64字节

MESI Cache一致性协议:

modified修改,exclusive独占,shared共享,invalid

Intel cpu是mesi缓存一致性协议,其他的cpu不一定

volatile怎么实现指令重排序?

1.volatile

2.字节码层级:ACC_VOLATILE

3.JVM层级:JVM的内存屏障

屏障两边的指令不可以重排!保障有序!

4.hotspotspot实现

synchronized与volatile相关推荐

  1. Java中的synchronized与volatile关键字

    原文出处:http://hukai.me/android-training-course-in-chinese/performance/smp/index.html Java中的"synch ...

  2. 内存可见性和原子性:Synchronized和Volatile的比较

    Java多线程之内存可见性和原子性:Synchronized和Volatile的比较     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article ...

  3. java map集合 事务控制_对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁...

    1.  对象回收过程? 可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用. 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径 称为引用链 ...

  4. java中二进制怎么说_面试常用:说清楚Java中synchronized和volatile的区别

    回顾一下两个关键字:synchronized和volatile 1.Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized.v ...

  5. Java基础学习总结(154)——Synchronized与Volatile、Synchronized与ReentrantLock概念及区别

    一.Synchronized与Volatile的区别 首先需要理解线程安全的两个方面:执行控制和内存可见.执行控制的目的是控制代码执行(顺序)及是否可以并发执行.内存可见控制的是线程执行结果在内存中对 ...

  6. Java并发(四)——synchronized、volatile

    文章目录 synchronized.volatile 1 Java内存模型JMM 2 伪共享 3 指令重排 4 synchronized 5 volatile 6 synchronized和Lock ...

  7. 【腾讯阿里最全面试题】介绍下Synchronized、Volatile、CAS、AQS,以及各自的使用场景

    [腾讯阿里最全面试题]介绍下Synchronized.Volatile.CAS.AQS,以及各自的使用场景(文章较长,建议收藏观看) 相关视频讲解: 面试中出现概念最高的技术-原来就是这个锁 后台开发 ...

  8. Java 并发编程_详解 synchronized 和 volatile

    文章目录 1. synchronized 的应用 1.1 基础知识 1.2 synchronized 语法 2. Monitor概念 3. Synchronized原理进阶 3.1 对象头格式 3.2 ...

  9. day 23-24 面试题:synchronized和volatile的区别;final,finally,finalize区别

    面试题: 1. synchronized和volatile的区别 2. final,finally,finalize区别 1. synchronized和volatile的区别 1.1 JVM内存模型 ...

  10. 既生synchronized,何生volatile (synchronized与volatile的区别)

    既生synchronized,何生volatile (synchronized与volatile的区别) 我们知道,synchronized和volatile两个关键字是Java并发编程中经常用到的两 ...

最新文章

  1. XPath学习:轴(13)——namespace
  2. GetSafeHdc( )
  3. SQL SERVER数据库中 是否可以对视图进行修改删除
  4. Java提高学习之Object(3)
  5. 信号与线性系统分析_线性系统与采样定理
  6. Linux 线程如何实现同步与互斥
  7. 【VMC实验室】在QCloud上创建您的SQL Cluster(5)
  8. String引起的OutOfMemory异常 + 如何计算C#对象所占内存的大小
  9. div模拟textarea在ios下不兼容的问题解决
  10. 安卓自定义相机拍照功能全解(不调用系统相机)
  11. 常见的弱口令字典1000~一石三鸟
  12. 基于easyx低配版flappybird
  13. 差异基因p为0_RNAseq数据分析文献22差异基因与临床数据相关性分析
  14. 通过阅读饥荒代码理解树人机制
  15. 加州房价模型(住房价格中位数)
  16. java referencequeue,Reference 、ReferenceQueue 详解
  17. 60个平移过渡预设PR合集
  18. 助你深刻理解——最长公共子串、最长公共子序列(应该是全网数一数二的比较全面的总结了)
  19. 积分商城搭建前的5个关键准备工作?
  20. PyQt5 QThread

热门文章

  1. LeetCode 280. 摆动排序
  2. MySQL 增加、更新、删除
  3. LeetCode 1379. 找出克隆二叉树中的相同节点(二叉树遍历)
  4. LeetCode 219. 存在重复元素 II(哈希)
  5. LeetCode 36. 有效的数独(哈希)
  6. 数据结构--栈--浏览器前进后退应用
  7. 漂亮的html页面源码_爬虫数据分析之html
  8. 判断深度学习模型的稳定性_全自动搭建定制化深度学习模型
  9. 文本分类问题不需要ResNet?小夕解析DPCNN设计原理(下)
  10. 论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模