1.volatile变量
当变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存变量上的操作与其他内存操作仪器进行重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。
2.典型用法
检查某个状态标记以判断是否退出循环
volatile boolean asleep; while(!asleep) continue;
volatile通常用于某个操作完成、发生中断或者状态的标志。与加锁机制比起来,volatile只能确保变量的可见性,并不能保证原子性
3.使用条件
1)对变量的写入操作不依赖变量的当前值,或者你能够确保只有单个线程更新变量的值;
2)该变量不会与其他状态变量一起纳入不变性条件中;
3)在访问变量时不需要加锁。
4.题目
一个volatile变量count=0,有1000个线程同时对它进行+1操作,最终count值为多少?
答案:不确定,volatile不能保证count=count+1是个原子性操作,所以最终结果是不确定的。
5.资料
相关推荐
volatile 变量详解 volatile 变量是一种特殊类型的变量,关键字 volatile 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单地说就是防止编译器对代码进行优化。 volatile 变量的...
volatile变量在编程语言中,尤其是Java和C/C++中,是一种特殊的标识符,用于指示编译器该变量的值可能在编译器不知情的情况下发生变化。这个关键字的主要作用是告诉编译器不要对这个变量进行优化,每次使用时都需要...
### STM32中Volatile变量的正确使用 #### 概述 在嵌入式系统编程中,`volatile`关键字的正确使用对于确保程序的稳定性和可靠性至关重要。它主要用于标记那些可能在程序运行过程中被外部因素(如硬件中断、多线程...
### Java入门教程:数据类型与正确使用Volatile变量 #### 概述 在Java编程语言中,`volatile`关键字提供了一种轻量级的同步机制,用于确保共享变量的可见性和一定程度上的线程安全性。相比于传统的锁机制如`...
本资料《深入探讨Java多线程中的volatile变量》将带你深入理解这个概念,全面解析其工作原理和实际应用。 volatile关键字在Java中主要用于解决多线程环境下的可见性和有序性问题。它确保了被volatile修饰的变量对...