我正在尝试使用Timer.schedule()
安排一个操作发生在1s之后。我遇到的问题是,在执行操作后,有一个打开的线程悬挂,我被迫按Ctrl + C关闭它。
我做错了吗?如何阻止计时器离开开放的线程?
public class MyClass {
public static int WAITING_WINDOW = 1000;
private boolean waiting = true;
public MyClass() {}
public void myMethod() {
new Timer().schedule(
new TimerTask() {
@Override
public void run() {
setWaiting(false);
}
}, WAITING_WINDOW
);
}
public void setWaiting(boolean waiting) {
this.waiting = waiting;
}
}
答案 0 :(得分:3)
保留对Timer
的引用并致电Timer.cancel()
。
并阅读javadocs,它们都记录在那里!