我在主线程开始时启动了一个子线程
然后主线程根据用户的操作动态改变一个全局变量
但是子线程读取这个全局变量时,却不是动态的,一直是初始时候的值
应该怎么办呢
那你这个变量不是共享变量吧。代码看下。
线程最好不要定义全局变量,应该是共享数据,定义一个类实现Runnable接口,线程里面共享该类的成员。
全局变量加个关键字 volatile
全局变量确实只有一个,但运行时全局变量会读到各自线程的缓存中,如果缓存不刷新则不能保证全局变量在所有线程中的同步。
结论:
在变量名前加上volatile 保证缓存刷新即可。
可以看一下volatile的标识符