Timer任务定时器如何终止

一个简单的计时器:

		# do something ……
		
		long time = 1 * 1 * 1000L;
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("开始计划任务。");
            }
        }, time);

开始计时后,过来1秒钟会开始计划任务。但是计划任务结束后会发现,其实程序还有还没有停止,如下eclipse的控制台还是会显示还在运行状态。
在这里插入图片描述
通过打断点,发现计划任务执行结束后,计时器的线程没有结束(本来应该已经结束了的)。
Timer任务定时器如何终止_第1张图片
再次调试,发现又挂起了新的线程:
Timer任务定时器如何终止_第2张图片

在计时器结束后,我们需要通过public void cancel()来取消这个线程,不然它会一直挂起。如果需要在外面终止计时器,也可以schedule()方法外面调用这个方法。

		# do something ……
		
		long time = 1 * 1 * 1000L;
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("开始计划任务。");
                timer.cancel();
            }
        }, time);

参考:

  • https://blog.csdn.net/mars_idea/article/details/80724825
  • http://www.cocoachina.com/articles/77652
  • 定时器Timer如何终止运行的问题

你可能感兴趣的:(Java基础,Timer,计时器,JAVA)