1

我正在尝试编写一个程序,以在整个程序运行过程中不断检查变量的变化。这是否需要线程中的无限循环?

4

4 回答 4

1

有比定期轮询变量值更好的选择。轮询可能会错过变量更改,即使没有发生任何事情,它也需要计算资源。

您可以将变量包装在包装类中,并仅通过设置器更改它。

如果您使用的是 Eclipse,则可以在值更改时要求调试器停止。

于 2013-04-06T15:07:12.463 回答
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;
    }
}
于 2013-04-06T15:06:27.213 回答
0
Class Test{
   private int var;

   public void setVariable(int var){
     this.var = var;
     varChangedCallBack(); 
   }

   public void varChangedCallBack(){
      //Do something on var changed
   }
}

由于上面的变量是私有的,因此只能通过 setter 进行更改。更改后我们调用回调方法,您可以在其中对变量更改做任何您想做的事情。

于 2013-04-06T15:07:34.110 回答
0

如果您有一个专用线程来检查变量状态,那么应该通过对象上的同步通知唤醒这个等待线程来完成。等待线程将在该对象上同步等待。

如果您没有专用线程,那么这就是观察者模式。http://en.wikipedia.org/wiki/Observer_pattern

于 2013-04-06T15:24:53.847 回答