2014-04-12 40 views
0

我有一个实现Runnable接口(用于可读性,我已经简化它)计算类:为什么在可观察对象作为新线程运行时没有通知观察者?

public class ColorReduction extends Observable implements Runnable { 

    public ColorReduction(Layer inputLayer, Layer outputLayer) { 
     this.init(); 
    } 

    private void init() { 
     addObserver(new ActionObserver()); 
    } 

    public void run(){ 

     notifyObservers(EAction.COLOR_REDUCTION_START); 
     setChanged(); 

     // some computation stuff..... 

     notifyObservers(EAction.COLOR_REDUCTION_FINISH); 
     setChanged(); 

    } 

} 

,并在控制器我运行这个类作为一个新的线程:

ColorReduction cr = new ColorReduction(model.getInputLayer(), model.getOutputLayer()); 

      Thread t = new Thread(cr); 
      t.start(); 

问题:观察员(ActionObserver)仅在颜色缩小阶段结束时(COLOR_REDUCTION_FINISH)通知,而不是在本阶段开始时(COLOR_REDUCTION_START)。

我的代码有什么问题?

回答

2

您需要先调用setChanged():

this.setChanged(); 
this.notifyObservers(EAction.YOUR_ENUM_VALUE); 
相关问题