我有一个简单的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...发布于 2014-09-17 13:51:34
当您想让计时器在运行完成后立即终止时,您需要调用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();
}
}发布于 2014-09-17 13:51:14
来自医生们
默认情况下,任务执行线程不作为守护进程线程运行,因此它能够防止应用程序终止。如果调用方想要快速终止计时器的任务执行线程,调用方应该调用定时器的cancel方法。
https://stackoverflow.com/questions/25892316
复制相似问题