21
2018
09

volatile关键字-----多线程

 

Java提供了volatile关键字来保证可见性。

 当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。

  而普通的共享变量不能保证可见性,因为普通共享变量被修改之后,什么时候被写入主存是不确定的,当其他线程去读取时,此时内存中可能还是原来的旧值,因此无法保证可见性。

  另外,通过synchronized和Lock也能够保证可见性,synchronized和Lock能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主存当中。因此可以保证可见性。



一定要记得,程序的运行就是在内存里面

« 上一篇 下一篇 »

评论列表:

1.访客  2018-09-21 20:40:03 回复该评论
又学新知识啦
1.访客  2018-09-22 04:13:56 回复该评论
没有,今天上课的时候看到的知识

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。