java volatile volatile怎么用

volatileint和int区别是什么呀?怎么用?这个多是嵌入式编程时可能会用到 。
volatile的意思是告诉编译器 , 在编程源代码时 , 对这个变量不要使用优化 。
在一般的程序设计中 , 如:
int *a int b
b = (*a) * (*a)这种情况 。
通常编译器为了减少存储器的读写时间 , 会把代码优化为:
int *a int b int c
c = *a
b = c * c
因为外部存储器的读写速度肯定赶不上内存的读写速度 , 这样可以省一次外部存储器的读取时间 , 从而提高速度 。
如果把int *a改为volatile int* a编译器就不会自动把它优化掉了 。在整个运算过程中 , 对变量*a的值读取了再次 。防止因变量*a的值在这一期间发生了改变 , 而导致程序结果的错误 。
请用中断子程序举例 , 如何正确的使用volatile这个变量的修饰符?【java volatile volatile怎么用】一个对象的值可能会在编译器的控制或检测之外被改变时 , 例如一个被系统时钟更新的变量 , 那么对象应该声明成volatile 。编译器执行的某些例行优化行为不能应用在已指定为volatile的对象上 。volatile限定符的用法同const非常相似 , 都是作为类型的附加修饰符 。volatile修饰符的主要目的是提示编译器 , 该对象的值可能在编译器未监测到的情况下被改变 。因此编译器不能武断的对引用这些对象的代码作优化处理 。

    推荐阅读