我正在制作一个项目,其中我在一段时间后发生了一些事情, 我计算那个时间在睡眠方法中通过那个时间。 如果我再次改变时间,那么我想结束前一个线程并开始一个新线程。 所以我想知道如何结束睡眠方法中的线程而不执行它的run方法。
答案 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
块很重要,因为您需要拥有您想要等待或通知的监视器。