volatile关键字

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

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

 

 

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

 

 

线程每次修改值都会:

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

 

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

 

 

而volatile关键字的作用是:

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

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

 

posted @ 2020-08-17 19:57  Joker-0927  阅读(132)  评论(0编辑  收藏  举报
// 侧边栏目录