我有简单的Timer
控制台应用程序。为什么这个应用程序在执行run
程序后仍然没有停止等待?
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...");
}
}
输出:
starting
exiting
Fetching mail...
答案 0 :(得分:1)
来自the docs:
默认情况下,任务执行线程不作为守护程序线程运行,因此它能够阻止应用程序终止。如果调用者想要快速终止计时器的任务执行线程,则调用者应该调用计时器的cancel方法。
答案 1 :(得分:0)
如果希望定时器在执行运行后立即终止,则需要调用timer.cancel()
。
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();
}
}