volatile有哪些作用

在Java语言编写程序中,有时为了提高程序的运行效率,编译器会自动对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量时有可能会直接从缓存中读取这个值,而不会去内存中读取。

但遇到多线程编程时,变量的值可能因为别的线程而改变了,而缓存的值不会相应改变,从而造成读取的值和实际变量的值不一致.

volatile 是一个类型修饰符,它是被设计用来修饰被不同线程访问和修改的变量。

被volatile类型定义的变量,系统每次用到它时都是直接从对应的内存当中提取,而不会利用缓存。在使用了volatile修饰成员变量后,所有线程在任何时候所看到变量的值都是相同的。

需要注意的是,由于volitile不能保证操作的原子性,一般情况下不能sychronized.

猜你喜欢

转载自blog.csdn.net/qq_43157982/article/details/89677340
今日推荐