jvm中volatile关键字原理与并发编程介绍

volatile关键字原理介绍:

在深入理解Java虚拟机书中有这样一种说法:
加入volatile关键字与不加volatile相比,加了之后生成的汇编代码多了一个lock前缀的指令,此指令就相当于一个内存隔板,
这个内存隔板可以确保jvm指令进行优化重排序时不会把其后面的指令排到其之前,也不会把其前面的指令排到其后面,而且他会强制的把对线程工作内存区的修改立即写道主存中,当我们对某个特定一处进行写操作时,它会导致其他CPU中对应的缓存无效

java并发编程:

并发编程的三个特点:原子性、可见性、有序性

1)原子性:

原子性就是要么成功、要么失败,java中原子性操作的话java内存模型保证了基本数据的原子性操作,原子性操作我们可以借助synchronized、Lock来实现原子性操作

2)可见性:

可见性的话就是如果一个共享变量被修改时,他会立即把修改后的值刷到主存中去,来供提供最新状态

3)有序性:

由于java内存模型为了性能考虑,选择了允许编译器和处理器对指令进行重排优化,这个重排对单线程是没有任何的影响的,但是对于多线程并发来说的话那就有影响了

volatile关键字可以解决并发编程的这个问题

java内存模型:堆、栈、数字计数器、常量池

java利用的是多线程机制进行处理多个任务,每个线程之间互不影响私有化都有各自的工作内存,同时呢又共享主存,在线程与内存区域交互时,数据会从主存复制到线程的工作内存一份,进而由线程进行数据处理,处理完之后会再次复制到主存中去。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值