自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

夕阳的博客

一个简单的java工程师

  • 博客(3)
  • 收藏
  • 关注

原创 深入理解java内存屏障(volatile实现原理)

文章目录一、前言二、CPU的内存一致性模型三、java规范下的内存屏障四、从字节码层面看volatile五、从JDK源码层面看volatile六、从x86架构下看内存屏障七、实际汇编下的内存屏障八、总结一、前言阅读本文需要先了解以下:对java内存模型有一定的了解。 浅谈java内存模型对CPU的cache一致性有一定了解。 CPU的cache一致性在上篇文章中,我们知道了内存屏障用来解决多核CPU内缓存数据不一致的问题。cpu为了提高性能,对内存一致性进行破坏:cpu的有序性破坏

2021-05-27 19:05:36 5964 13

原创 天啊!CPU为什么有可见性问题?它为什么要乱序执行?

文章目录一、缓存的结构二、缓存一致性协议MESI三、Store Buffers四、内存屏障五、Invalidate Queues六、读写内存屏障七、总结在浅谈java内存模型中,线程的读写都是跟工作内存打交道。而每个线程有自己的工作内存,同一个变量可能在多个工作内存中存在,在一个线程修改变量后,就会出现其他线程的工作内存里还存着该变量的旧值,即其他线程不能看到该变量的最新值,即出现了可见性的问题。线程的背后是CPU在运行,CPU本身存在可见性和乱序执行的问题,导致让java抽象出了工作内存的概念。所以

2021-05-27 19:05:07 877

原创 浅谈java内存模型

文章目录一、Java内存模型1.定义2.特性二、JSR133规范三、主内存与工作内存四、指令重排序五、volatile关键字六、正确地多线程编程七、为什么要抽象出工作内存一、Java内存模型1.定义Java内存模型(JMM, Java Memory Model)是一个规范,是 Java语言设计者提供给 Java 开发者的理论支持以及正确的线程同步策略。2.特性屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各平台下都能达到一致的内存访问效果。正确的进行多线程编程。可以让使用者正确

2021-05-27 19:04:25 194

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除