线程-volatile关键字
来源:互联网 发布:阿里云控制台 编辑:程序博客网 时间:2024/05/22 12:20
volatile关键字概念:主要作用是让变量在多个线程之间可见,并不具备原子性。
在java中每个线程都有一个工作内存区,每个工作内存区中都拷贝了一份所有被共享的主内存中的变量,线程在自己的工作内存中所操作的这些变量都是拷贝过来的,不用再去主内存中去获取了。
volatile的作用就是强制线程到主内存(共享内存)中去读取被volatile修饰的变量,而不去线程工作内存中去获取,从而实现了多个线程的变量可见,也就满足了线程安全的可见性。
volatile不能满足原子性(同步),如果想要保持同步建议选用AtomicInteger。
在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个线程本地内存中;以后再取变量值时,就直接从本地内存中取值;当变量值在本线程里改变时,会同时把变量的新值copy到本地内存中,以便保持一致;在某个特定的时候,将本地内存的更改写到系统主内存中去;当变量在因别的线程等而改变了值,并且该变化没有写到系统主内存,本次线程的本地内存中的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致;但是当变量被volatile修饰后,每次更改该变量的时候会将更改结果写到系统主内存中,利用多处理器的缓存一致性,其他处理器会发现自己的缓存行对应的内存地址被修改,就会将自己处理器的缓存行设置为失效,并强制从系统主内存获取最新的数据。这样就能保证即使在别的线程中改变了该变量的值,在本线程中也能取到最新更改后的值。
0 0
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- Java线程:volatile关键字
- 线程-volatile关键字
- Java线程:volatile关键字
- 关于线程volatile关键字
- Java线程:volatile关键字
- 线程同步之volatile关键字
- 线程同步中volatile关键字
- 海量数据常见面试题
- 棋盘覆盖(分治、递归)
- 性能调优之:缓存
- Eclipse 下创建一个 JSP + Servelt 项目
- 输入外挂
- 线程-volatile关键字
- C++哈希表unordered_map,推荐使用。
- 升级内存,插上两个内存条显示单通道,怎么设置为双通道
- 域名解析过程
- Subtree with Maximum Average
- MQTT协议(三) PUBLISH
- TTF 字体文件 删除不了,提示已经在System 打开
- 关于Unity3D中对象池的创建与回收
- 问题 M: 因子个数