volatile内存语义以及实现(一)

本文探讨了Java中volatile关键字的内存语义和实现原理,将其视为JMM对程序员的承诺,保证多线程环境下数据可见性。volatile特性包括数据可见性和操作原子性,通过LOCK指令确保数据同步,避免编译器和处理器重排序。
摘要由CSDN通过智能技术生成

大家好,很久没有和大家分享学习知识了,今天大年初一,在这里祝大家新年快乐。

作为新年第一篇博客,我们在这里和大家分享一些关于volatile的学习知识。

首先我们知道volatile被称作是JAVA中的轻量级锁,其实个人理解这种说法并不恰当,只能是说明volatile变量具有锁的某些特性,但是不能简单的理解成锁。下面说一下本人对volatile的理解,首先一点,我并不是将voiatile当成锁来理解,我更加觉得volatile像是JMM(JAVA内存模型)对JAVA程序员的一种承诺,可以这么说,作为一个程序员,当我对我的变量使用的volatile来修饰的时候,那么JMM就保证了这个变量在多线程情况下的数据可见性,对于使用者来说,我并不需要知道,这种可见性是怎么实现的。所以volatile更像是一种承诺,类似于Serializable接口,这个接口并没有实现任何的方法,但是实现这个接口后,JVM就会对数据在数据传输时进行序列化处理,当然,这里仅仅是做类比,两者之间是完全不同的两个东西。

那么说完了个人理解,我们来说一下volatile有什么特性以及是怎么实现的:

特性一:数据可见性

对于一个volatile变量的写,总是对之后对这个变量的读可见。

特性二:操作原子性:

对于对一个volatile变量的单个读或写总是能够保证原子性,但是类似于i++这种操作,不具备操作原子性。

那么这两个特性是怎么实现的呢?

首先我们从编译的角度来说,当对一个volatile变量进行写操作时,编译器进行编译后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值