为什么要用volatile

泄露秘密 提交于 2019-12-28 23:17:21
对于全局变量的访问,多线程同时访问,线程A和线程B可能只获得这个全局变量的一个备份(被弄到工作缓冲区了),这有可能导致线程A改变了全局变量的值,而线程B如果一直在忙,没有切换(比如执行sleep或synchronized),那么线程B里面要访问的全局变量就会一直 指向缓冲区里面的旧数据,除非线程B里面遇到sleep过synchronized这种语句让它有停顿过线程切换后再恢复回来这个线程才会刷新工作区,才会拿到全局变量的最新值。

除此以外,还可以在定义多线程访问又有机会被改变值的全局变量时,加上volatile关键字修饰,加了它就能保证此变量在各线程中保持全局可见。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!