java并发编程之volatile

你所做的事情也许暂时看不到成功,不要灰心,你不是没有成长,而是在扎根!



先讲下多线程原子性:

所谓原子性是指:

即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行,有点类似数据库的事务一样,

可见性:

可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值

上面的知识点会涉及到java内存模型,volatile作用就体现出了多线程的可见性


上面是java内存模型的抽象结构图:

如果线程A和线程B之间要进行通信就必须经历如下2个步骤:

1):线程A把本地内存A中更新过的共享变量刷新到主内存中去

2):线程B到主内存中去读取线程A之前已更新过的共享变量的值


volatile修饰的是成员属性不能修饰在方法上,使用volatile关键字会强制将修改的值立即写入主存,volatile不需要加锁,所以它比synchronized的效率要高,不会阻塞线程,所以它比synchronized更轻量级,从内存可见性角度将volatile读相当于加锁,volatile写相当于解锁,




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值