Java schedule()在执行后留下一个打开的线程
我正在尝试使用Java schedule()在执行后留下一个打开的线程,java,multithreading,timer,timertask,Java,Multithreading,Timer,Timertask,我正在尝试使用Timer.schedule()来安排一个操作在1s后进行。我遇到的问题是,在执行操作后,有一个打开的线程挂起,我被迫按Ctrl+C来关闭它 我做错什么了吗?如何阻止计时器离开打开的线程 public class MyClass { public static int WAITING_WINDOW = 1000; private boolean waiting = true; public MyClass() {} public void myMethod(
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;
}
}
保留对
计时器的引用
并调用Timer.cancel()
。
阅读javadocs,都有文档记录 保留对
计时器的引用
并调用Timer.cancel()
。
阅读javadocs,都有文档记录 我确实读过文件。。。“计时器的任务执行线程正常终止(并被垃圾回收)。但是,这可能需要任意长的时间。”我希望任意长的时间以毫秒为顺序,而不是秒。。。不过这解决了我的问题,谢谢:DI确实阅读了文档。。。“计时器的任务执行线程正常终止(并被垃圾回收)。但是,这可能需要任意长的时间。”我希望任意长的时间以毫秒为顺序,而不是秒。。。这解决了我的问题,谢谢