二.多线程基础之 volatile

并发复习笔记之第二章(多线程基础之 volitaile)
想看后续请持续关注

以下来源有书籍 深入理解 JVM 虚拟机,java 并发编程的艺术,深入浅出多线程,阿里巴巴技术手册以及一些公众号 CS-Notes,JavaGuide,以及一些大厂高频面试题吐血总结,以及狂神说视频笔记,目的在于通过问题来复习整个多线程,已下是全部章节,觉得不错点个赞评论收藏三连一下,您的鼓励就是我继续创作的最大动力!!!!

2 多线程基础之 volatile 以及 JMM

此处自己看一下内存模型图然后理解后再学习下面的问题

2.1 JVM 内存模型

Java的并发采用的是共享内存模型, 会遇到的两个问题是线程之间如何通信及线程之间如何同步,Java内存模型是不存在的东西,概念!约定!

2.1 volatile 的作用是什么

当写一个volatile变量时,JMM会把该线程本地内存中的变量强制刷新到主内存中去,Java模型确保所有线程看到这个变量的值是一致的。

2.2 volatile 可以保证线程安全吗,为什么?

1.想要线程安全必须保证原子性,可见性,有序性。而volatile只能保证可见性和有序性

2.3 volatile 可见性 是什么,为什么可以保证可见性?

  1. 可见性的意思是当一个线程 修改一个共享变量时,另外一个线程能读到这个修改的值,能读到的原因是程序任何对该变量的访问均需要 从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问 的可见性。

2.4 volatile 能保证有序性吗? 如何保证的?

  1. volatile 通过,在volitaile 写操作的时候使用内存屏障避免了指令重排,从而保证了有序性

2.5 volitaile 可以保证原子性吗? 如何保证原子性?

不可以,可以使用 lock ,synchronized这些锁或者 , 使用原子类中的CAS锁来解决

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值