我正在尝试编写一个程序,以便在整个程序运行期间不断检查变量的变化。这是否需要线程中的无限循环?
答案 0 :(得分:1)
有比定期轮询变量值更好的选项。轮询可能会错过变量,即使没有发生任何变化也需要计算资源。
您可以将变量包装在包装器类中,并仅通过setter进行更改。
如果您正在使用Eclipse,则可以要求调试器在值发生更改时停止。
答案 1 :(得分:0)
为你的变量使用包装类,如:
class VarWrapper{
private Object myVar;
public Object getMyVar() {
return myVar;
}
public void setMyVar(Object myVar) {
//[1],Here you'll know myVar changed
this.myVar = myVar;
}
}
答案 2 :(得分:0)
Class Test{
private int var;
public void setVariable(int var){
this.var = var;
varChangedCallBack();
}
public void varChangedCallBack(){
//Do something on var changed
}
}
由于上面的变量是私有的,所以只能更改'setter。更改后我们调用callback方法,在这里你可以做任何你喜欢做的变量变换。
答案 3 :(得分:0)
如果你有一个专用的线程来检查变量状态,那么它应该通过在对象上使用sync-notify唤醒这个等待线程来完成。等待线程将对该对象进行同步等待。
如果您没有专用线程,则使用Observer模式。 http://en.wikipedia.org/wiki/Observer_pattern