volatile关键字

多线程中如果两个线程同时使用第三方的共享数据,并且进行修改的话,那么就有可能出现数据更新不及时的问题原因是:

假设线程A和线程B共享第三方数据count:

线程A和线程B中都会开辟一段用来保存count值得变量副本,因为这样执行更快:

线程每次修改值都会:

  • 先将副本中的值修改
  • 然后赋值给副本
  • 最后更新共享数据中的值

所以在多线程的操作中,当A线程修改了共享数据时,B线程没有及时获取到最新的值,如果还在使用原先的值,就会出现问题 ,共享数据如果不做处理则会出现共享数据值更新缓慢的错误

而volatile关键字的作用是:

强制线程在每次使用被volatile关键字修饰的共享变量时,都会看一下共享数据的最新值。

(但是volatile关键字不能保证原子性)

迎风少年
原文地址:https://www.cnblogs.com/ZYH-coder0927/p/13519652.html