Java:通知wait() - 对象

时间:2014-01-28 13:51:30

标签: java

考虑班级

class Minute implements Runnable {

  private int min;
  // constructor

  public void run() {
    while (true) {
      min++;
      wait();
    }
  }

}


class Waker {
  // Unsure
}

如何使用Waker类唤醒/恢复等待的分钟对象?

2 个答案:

答案 0 :(得分:1)

要唤醒线程,您需要直接引用它,如下所示:

Minute min = new Minute();
min.run();

// later
min.notify();

如何将此引用纳入您的唤醒'类代码取决于你。

例如,通过构造函数:

class Waker {
    Minute towake;
    public Waker(Minute m) { towake = m; }
    public void wakeUp { towake.notify(); }
}

原来的例子变成了:

Minute min = new Minute();
min.run();
Waker waker = new Waker(min);

// later
waker.wakeUp();

或者您可以致电' notifyAll()'正如巴蒂建议的那样,但这非常粗糙。

答案 1 :(得分:0)

创建Minute类的对象,并在该对象上调用notifyAll()