如何在线程处于睡眠状态时结束线程?

时间:2010-07-28 07:25:15

标签: blackberry

我正在制作一个项目,其中我在一段时间后发生了一些事情, 我计算那个时间在睡眠方法中通过那个时间。 如果我再次改变时间,那么我想结束前一个线程并开始一个新线程。 所以我想知道如何结束睡眠方法中的线程而不执行它的run方法。

1 个答案:

答案 0 :(得分:4)

我在为Blackberry编程时假设Java?

如果是,请不要使用Thread.sleep()等待,而是使用wait()在监视器上,然后您可以notifyAll(),即

private Object waitObject = new Object();

public void doWait() {
  synchronized (waitObject) {
    waitObject.wait(10*1000); // wait up to 10 seconds
  }
}

public void wakeUp() {
  synchronized (waitObject) {
    waitObject.notifyAll();
  }
}

synchronized块很重要,因为您需要拥有您想要等待或通知的监视器。