深入理解volatile

本文探讨了Java volatile的关键特性,包括其对可见性的保证、为何不提供原子性以及指令重排的概念。重点介绍了如何通过synchronized和原子类型确保原子性,并举例说明在单例模式和并发工具库中的应用。
摘要由CSDN通过智能技术生成

volatile

1.是java虚拟机提供的轻量级同步机制------有三大特性:保证可见性,不保证原子性,禁止指令重排(有序)

2.JMM(java内存模型):---三大特性:可见性,原子性,有序性

3.volatile为什么不能保证原子性?:

因为拿值和put进内存值的过程 class里面执行代码不止一行 ,当写回内存的时候, 有些线程已经写回内存了 就存在了写覆盖

4.如何保证原子性?:

*加sync

*使用带原子包装的整型类

理解指令重排:

4.你在哪些地方用到过volatile?

*单例模式DCL代码 (Double Check Lock 双端检测模式)

*juc里面底层源码大规模使用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值