首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序在java.util.Timer使用后不终止

程序在java.util.Timer使用后不终止
EN

Stack Overflow用户
提问于 2014-09-17 13:43:40
回答 2查看 52关注 0票数 0

我有一个简单的Timer控制台应用程序。为什么这个应用程序在执行run过程之后不停止,并且仍然在等待什么?

代码语言:javascript
复制
package timer_old;
import java.util.Timer;
import java.util.TimerTask;



public final class FetchMail extends TimerTask {

  public static void main (String[] args) 
  {
    System.out.println("starting");
    TimerTask fetchMail = new FetchMail();
    Timer timer = new Timer();
    timer.schedule(fetchMail, 500);
    //timer.cancel();
    System.out.println("exiting");
  }

  public void run()
  {
    System.out.println("Fetching mail...");
  }


}

输出:

代码语言:javascript
复制
starting
exiting
Fetching mail...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-17 13:51:34

当您想让计时器在运行完成后立即终止时,您需要调用timer.cancel()

代码语言:javascript
复制
public final class FetchMail extends TimerTask {
        static Timer timer=null;
      public static void main (String[] args) 
      {
        System.out.println("starting");
        TimerTask fetchMail = new FetchMail();
         timer= new Timer();
        timer.schedule(fetchMail, 3000);

        //timer.cancel();
        System.out.println("exiting");
      }

      public void run()
      {
        System.out.println("Fetching mail...");
        timer.cancel();
      }


    }
票数 0
EN

Stack Overflow用户

发布于 2014-09-17 13:51:14

来自医生们

默认情况下,任务执行线程不作为守护进程线程运行,因此它能够防止应用程序终止。如果调用方想要快速终止计时器的任务执行线程,调用方应该调用定时器的cancel方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25892316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档