对于全局变量的访问,多线程同时访问,线程A和线程B可能只获得这个全局变量的一个备份(被弄到工作缓冲区了),这有可能导致线程A改变了全局变量的值,而线程B如果一直在忙,没有切换(比如执行sleep或synchronized),那么线程B里面要访问的全局变量就会一直 指向缓冲区里面的旧数据,除非线程B里面遇到sleep过synchronized这种语句让它有停顿过线程切换后再恢复回来这个线程才会刷新工作区,才会拿到全局变量的最新值。
除此以外,还可以在定义多线程访问又有机会被改变值的全局变量时,加上volatile关键字修饰,加了它就能保证此变量在各线程中保持全局可见。
来源:CSDN
作者:OK_boom
链接:https://blog.csdn.net/rocklee/article/details/103746950