0条评论
还没有人评论过~
是这样的:
我在A.java里启动了线程 t1.start
在t1线程里(因为功能分类只能在这里赋值) 用set() 方法,给 c.java的 变量 A 赋值。
然后在A.java里 使用 变量A。但发现A总是空值。
debug时发现A确实被赋值了。
这是为什么呢?
c.java里A的值不能一直保存吗?
谢谢
其实我的目的就是想 创建一个文件存放几个常用的全局变量。
按照你的描述,假定一个java文件定义一个public类,那么A.java定义了A类,c.java定义了C类。你的意思就是在C中有一个变量A,然后你在A类中创建了一个子线程,并且通过子线程对C类的A变量进行了赋值。但是使用的时候变量A的值总是空,debug的时候正常对吧?
我猜测是时机的问题。假如你在主线程中使用了A类,而在A类创建了子线程,再在子线程对变量A赋值,然后你在主线程访问,很可能是你在访问变量A时,子线程的赋值操作还没有完成,但是你debug的时候,我猜测你是看主线程的变量情况,这样子线程是正常执行的(不受断点影响),所以你在debug的时候就看到变量A有值,而直接运行时变量A没有值。