[笔记][思维导图]读深入理解JAVA内存模型整理的思维导图

本人记忆差,整理这个思维导图,相当于较认真的看了一遍,整个思维导图,基本上就是对原文的拷贝。
有了层级关系。和本人自己的一些理解。由于思维导图弄出来的图片大于100M了。所以就放出源文件,
更方便的阅读查阅。免积分下载:http://download.csdn.net/detail/mr_zhuqiang/8945087 (我很无语啊。以前的确是免积分,不知道啥时候变成5积分了。也不知道怎么修改成0积分)

有几点我觉得是看这个本书或则思维导图。你要明白的是:
1. 什么是内存可见性
2. 在java程序中,在底层执行的代码指令并不是完全按照顺序执行的-有重排序的存在
3. volatile 是一个和硬件的位数、数据的位数相关的概念,实际上和多线程是无关。

例:long:64位,在32位的硬件上操作long需要两次来往(寄存器和内存间),就可以需要volatile(多线程)来保证当前线程完全写入64位,其它线程才能读或写在64位硬件上操作long(64位),用不用volatile一点影响都没有(机器指令已经保证了这一点)
如果这个无误的话,那么就验证了 volatile的两个特性,可见性和原子性。然而,想用代码来展示出错效果的话,貌似写不出来,
有用volatile来保证同步性的。但是这个的确是误用的,volatile只是保证该变量的读写,并不保证 复合操作的同步性。所以应该记住volatile的两个特性就行了

4.正是因为有了重排序和数据竞争才出现了多线程并发安全问题
5.什么是逸出?:对象还没构造完成 引用已经被其他地方使用了 - 称为逸出
6.final的修饰的变量正确的初始化方法
下面是整理的思维导图层级截图展示
这里写图片描述
这里写图片描述
这里写图片描述

下载地址:http://download.csdn.net/detail/mr_zhuqiang/8939419

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 44
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值