JAVA自带了一个定时器,那就是Timer,要实现一个Timer的demo非常简单:

importjava.util.Timer;importjava.util.TimerTask;class Task extendsTimerTask{

@Overridepublic voidrun() {

System.out.println("******程序执行******");

}

}public classTaskTest {public static voidmain(String[] args){

Timer timer= newTimer();

Task task= newTask() ;

timer.schedule(task,3000); //这里的单位是毫秒

}

}

用Eclipse运行一下, 问题来了,明明程序已经执行结束,为何却没有自动关闭呢?

本着学习的精神,百度了一下,发现问这个问题的还真不少。明明已经结束,却为什么没有自动终止程序,这是因为系统默认当Timer运行结束后,如果没有手动终止,那么则只有当系统的垃圾收集被调用的时候才会对其进行回收终止。既然这样,我们可以使用System.gc()来实现程序的手动终止:

importjava.util.Timer;importjava.util.TimerTask;class Task extendsTimerTask{

@Overridepublic voidrun() {

System.out.println("******程序执行******");

System.gc();

}

}public classTaskTest {public static voidmain(String[] args){

Timer timer= newTimer();

Task task= newTask() ;

timer.schedule(task,3000); //这里的单位是毫秒

}

}

运行一下,OK,程序运行结束的同时,也成功终止。

但是Sytem.gc()在一个项目中是不能随便调用的,我们做做小测试如此做无可厚非,但是在项目中如此写,太不合实际了。

那么我们可以考虑用Timer类自带的cancel()方法,实现Timer的终止。

来看一下API中对cancel()方法的描述:

public voidcancel()

Terminatesthis timer(终结这个timer), discarding any currently scheduled tasks(抛弃所有当前正在执行的TimerTask). Does not interfere with a currently executing task (ifit exists). Once a timer has been terminated, its execution thread terminates gracefully, and no more tasks may be scheduled on it.

Note that callingthis method from within the run method of a timer task that was invoked by this timer absolutely guarantees that the ongoing task execution is the last task execution that will ever be performed by thistimer.

This method may be called repeatedly; the second and subsequent calls have no effect.

那么我们来实现一下:

importjava.util.Timer;importjava.util.TimerTask;public classTaskTest {public static voidmain(String[] args) {

Timer timer= newTimer();//三秒后开始执行,每隔一秒执行一次

timer.schedule(new Task(timer), 3 * 1000, 1000);

}

}class Task extendsTimerTask {privateTimer timer;publicTask(Timer timer) {this.timer =timer;

}int i = 1;

@Overridepublic voidrun() {

System.out.println("******程序执行******");//当执行到第5秒,程序结束

if (i++ == 5) {this.timer.cancel();

System.out.println("#### 程序结束 ####");

}

}

}

OK,成功结束程序。

python定时器 中止_定时器Timer如何终止运行的问题相关推荐

  1. java 定时器 倒计时_定时器倒计时demo

    /** * 定时器倒计时demo */ import java.io.InputStream; import java.util.Scanner; import java.util.Timer; im ...

  2. 安装python无法启动_终端里为什么无法运行python?

    1.首先确认自己电脑是否安装了python,如果不确定可以在终端直接输入python,出现以下界面说明已经正确安装: 2.如果已经安装了python,但是在终端还是显示未安装,很有可能是没有配置环境变 ...

  3. timer定时器_拾遗Timer定时器

    一 Timer  介绍 在开发中我们经常会遇到一些简单定时任务的需求,而不需要量级较重的定时任务就可以采取java定时器: java.util.Timer工具类中的Timer 是定时器,但定时任务写在 ...

  4. java定时器_拾遗Timer定时器

    一 Timer 介绍 在开发中我们经常会遇到一些简单定时任务的需求,而不需要量级较重的定时任务就可以采取java定时器: java.util.Timer工具类中的Timer 是定时器,但定时任务写在j ...

  5. java timertask 初始化_定时器实现方式之TimerTask、Timer

    在未来某个指定的时间点或者经过一段时间延迟后执行某个事件,这时候就需要用到定时器了.定时器的实现方式有很多种,今天总结最简单的实现方式.java 1.3引入了定时器框架,用于在定时器上下文中控制线程的 ...

  6. python 定时器 ms_python 定时器,轮询定时器的示例

    python 定时器默认定时器只执行一次,第一个参数单位S,几秒后执行 import threading def fun_timer(): print('Hello Timer!') timer = ...

  7. c语言编程流水灯与交通灯实验,C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟.doc...

    C51单片机实验报告_流水灯_交通灯_定时器_双机交互_时钟 学 号: 班 级: 自动化10班 姓 名: 张 指导老师: 胡 2012.12 单片机核心板实验要求 流水灯实验 实验目的: 简单I/O引 ...

  8. 串口中断和定时器中断_启士 | 蓝桥杯单片机教程12 中断与定时器 (上)

    这是 北航士谔书院 的第 949 篇推送 本文介绍中断(interrupt)的基本概念,并演示定时器中断.外部中断的使用方法.如果同学们对文章内容有疑问,或发现文中有任何不妥之处,请点击"阅 ...

  9. 记录js定时器产生 Deferred long-running timer task(s) to improve scrolling smoothness

    前言 某日,在前台js中有一个倒计时发短信的需求,一次发送后,间隔60s才能继续发送,在页面调试的时候发现出现 Deferred long-running timer task(s) to impro ...

  10. Linux时间子系统之高分辨率定时器层(HR Timer)

    在前面介绍定时器层的文章中我们已经知道了在Linux内核中已经存在了一个管理定时器的通用框架.不过它也有很多不足,最大的问题是其精度不是很高.哪怕底层的定时事件设备精度再高,定时器层的分辨率只能达到T ...

最新文章

  1. OGG 跳过事务(转)
  2. 先装XP再装WIN2000双系统无法启动的解决办法
  3. 485转换器产品类型介绍
  4. ORACLE 10.2.01升级10.2.05 for windows 详细文档
  5. c语言中循环结构的作用,C语言中对于循环结构优化的一些入门级方法简介
  6. 4米乘以12米CAD图_CAD做钣金件展开的原理你知道吗?
  7. LNMP架构介绍与搭建
  8. 130242014029-黄超强-实验一
  9. 在Angular外部使用js调用Angular控制器中提供的函数方法或变量
  10. 分布式文件存储FastDFS之配置Nginx模块
  11. 深入理解信息科学技术与创新之“自然智能”
  12. 【贴图操作】怎么用sp啊?
  13. 读书笔记《Redis入门指南》
  14. 幼儿园小程序实战开发教程
  15. 金财致远咨询有限公司莅临美和易思参观交流
  16. java科学计算器代码_用JAVA编写的科学计算器源代码是什么?
  17. 中国近代史纲要考研选择题
  18. 媒体报道 | 创业邦:巴别鸟,一款便捷好用的企业级文件协同网盘
  19. canvas画七巧板
  20. python RemoveBg api换照片底色

热门文章

  1. Atitit mybatis topic file list Total 300ge (9+条消息)MyBatis框架核心之(五)注解使用resultMap及多表查询 - 弱弱的猿 - CSD
  2. Atitit 数据出入管理法v3 目录 1.1. 边界检查:web边界和sql边界 1 2. 检查条目 1 2.1. 数据种类检查 整数 小数 字符串(带长度,字符白名单校验) 1 2.2. 字符黑
  3. Atitit 爬虫发展历史 在互联网发展初期,网站相对较少,信息查找比较容易。然而伴随互联网爆炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大众信息检索需求的专业搜索网站便应运
  4. Atitit Java制作VCARD vcf 以上就是关于vCard的基本介绍,维基百科(英文)https://en.wikipedia.org/wiki/VCard写的比较全,可惜我看不懂。
  5. Atitit 游戏的原理与概论attilax总结
  6. atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制
  7. paip.mysql 批量kill 连接.
  8. paip.提升用户体验-----c++ 宏的使用...替换从在的地张儿复制过来的代码.
  9. 中金:基金投顾试点扩容,买方时代已至
  10. Rust: 如何在Atom中用上Atom Beautify(绑定rustfmt)?