Timer.schedule() 执行后留下一个打开的线程

Timer.schedule() leaves an open thread after execution

我正在尝试使用 Timer.schedule() 安排操作在 1 秒后发生。我遇到的问题是在执行操作后,有一个打开的线程挂起,我不得不按 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 的引用并调用 Timer.cancel()。 并阅读 javadocs,所有内容都记录在那里!