检测变量变化

时间:2013-04-06 15:03:20

标签: java

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

4 个答案:

答案 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