1、volatile关键字有什么用
volatile是java语言的关键字,是变量修饰符。它是被设计用来修饰被不同线程访问和修改的变量。
volatile的作用是: 作为指令关键字,确保本条指令不会被编译器优化,且应用的所有线程读取这个变量的值是一致的。
简单的说,就是禁止编译器对代码进行优化,且强迫所有线程从共享内存读取该变量(而不是读取寄存器中的备份),变量发生改变时强行存入共享内存。
java内存模型需要具有以下规则:原子性(Atomicity)、可见性(Visibility)、可排序性(Ordering)。
用volatile修饰的变量,就会具有可见性,且不允许线程内部缓存和重排序,但是它不能使变量具有原子性。
了解java内存模型看这里:java内存模型是什么样的
在目前多线程频繁使用的年代,并不建议使用这种可靠性低、且对开发者或者场景要求高的方式来完成多线程的操作,由于volatile很容易被误用于进行原子性操作,如果使用不当则会错误频出。
时间: 2024-10-11 04:49:54