介绍一下volatile

volatile是Java提供的轻量级的同步机制,比sync的开销要小

被volatile定义的变量,系统每次用到它时都是直接从主存中读取,而不是各个线程的工作内存

volatile可以像sync一样保持变量在多线程环境中是实时可见的

可见性:

每个线程都有自己的工作内存,每次线程执行时,会从主存获得变量的拷贝,对变量的操作是在线程的工作内存中进行,不同的线程之间不共享工作内存;对于volatile(sync,final)来说,打破了上述的规则,当线程修改了变量的值,其他线程可以立即知道该变量的改变。而对于普通变量,当一个线程修改了变量,需要将变量写回主存,其他线程从主存中读取变量后才对该线程可见

volatile具有sync的可见性,但是不具备原子性(解决java多线程的执行有序性)。volatile适用于多个变量之间或者某个变量当前值和修改之后值之间没有约束。因此,单独使用volatile还不足以实现计数器,互斥锁等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值