volatile有什么作用

来源:互联网 发布:龙布峰针贴淘宝有卖吗 编辑:程序博客网 时间:2024/06/08 10:59
volatile概念:volatile是一个类型修饰符,用来修饰被不同线程访问和修改的变量,被volatile修饰的变量,系统每次用到它的时候,都是直接从对应的内存中拿,而不走缓存。

以上是volatile的概念,具体想弄明白volatile的作用,还需要了解下java的内存模型

在java中,为了提高程序的运行效率,编译器会自动对将经常访问的变量进行缓存,程序在读取变量的时候,可能会从内存中读取,也可能会从缓存中读取,大大的提高了程序的存取速度,但是在多线程的编程中,变量的值可能会在内存中被改变了,但是缓存中的值没有被改变,这时候可能会出现类似数据库中脏读的情况。而变量被volatile修饰后,默认只从内存中读取数据,保证了数据的一致性