经常需要为一个简短的执行(这任务只执行一次)安排时间列任务(一个单位的任务)或在制定的规则中重复执行。例如,你可能安排一个闹钟任务去运行一次(可能在早上唤醒这个任务),或安排一个夜间回滚任务在时间间隔中执行。对于任何一种任务,你能想要任务在特殊时间执行,或在将来或初始化的延迟时间执行。
    你可以使用Thread和连接一个风格去创建一个框架来完成任务时间安排表。然后,Java1.3介绍一个更多方便和简单的可供选择的类,在java.util.Timer和java.util.TimerTask类中。
    定时器让你的TimerTasks在将来某个时刻在后台执行,这就是我们所知的任务执行线程(task-execution thread)。定时任务可以为一次执行或定期执行重复执行。
    Listing4-5展示了一个应用,证明一次执行一个定时任务。

Listing4-5证明一个简短执行

package com.owen.thread.chapter4;import java.util.Timer;
import java.util.TimerTask;public class TimerDemo
{public static void main(String[] args){TimerTask task = new TimerTask(){@Overridepublic void run(){System.out.println("alarm going off");System.exit(0);}};Timer timer = new Timer();timer.schedule(task, 2000); // Execute one-shot timer task after// 2-second delay.}
}

Listing4-5描述一个应用,它在主线程第一次实例一个TimerTask的匿名子类,它重写了run()方法并输出一个警告信息,之后执行System.exit(0);因为这个应用要直到非守护线程结束了它才可以结束。这个主线程实例Timer和执行它的schedule()方法,将这个task作为第一个参数。第二个参数安排在一个初始延迟2000毫秒时间后一次执行任务。
    执行上面的程序,你将会在2000毫秒后看到输出:alarm going off。
    Listing4-6出现一个应用,证明一个定时的定时任务的重复执行。
    Listing4-6 在大约一秒钟的时间间隔内显示当前毫秒值

package com.owen.thread.chapter4;import java.util.Timer;
import java.util.TimerTask;public class TimerDemo4_6
{public static void main(String[] args){TimerTask task = new TimerTask(){@Overridepublic void run(){System.out.println(System.currentTimeMillis());}};Timer timer = new Timer();timer.schedule(task, 0, 1000);}
}

Listing4-6描述一个应用,它默认主线程第一次实例一个TimerTask匿名子类,它重写run()方法,并输出当前时间(毫秒)。这个默认主线程在实例Timer和执行它的schedule()方法,将这个task作为第一个参数。第二个和第三个参数安排任务,在没有初始延迟时间而是每1000毫秒之后重复执行这个任务。
    执行上面的代码,你将会看如下的结果。

 1496449834769
1496449835768
1496449836768
1496449837768
1496449838768
1496449839768
1496449840768
····

源码下载:git@github.com:owenwilliam/Thread.git

4.3定时器框架(Timer Framework)相关推荐

  1. java 定时器框架_java定时器

    java定时器 什么是Java定时器? Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以下几种: 通过Timer来实现定时任务 Timer 是来自 java.util.Ti ...

  2. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名...

    转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...

  3. java集合框架的结构_集合框架(Collections Framework)详解及代码示例

    简介 集合和数组的区别: 数组存储基础数据类型,且每一个数组都只能存储一种数据类型的数据,空间不可变. 集合存储对象,一个集合中可以存储多种类型的对象.空间可变. 严格地说,集合是存储对象的引用,每个 ...

  4. 实体框架(Entity Framework)快速入门

    实体 框架 (Entity Framework )简介 实体框架Entity Framework 是 ADO .NET 中的一组支持 开发 面向数据的软件应用程序的技术.是微软的一个ORM框架. OR ...

  5. wxpython应用实例_wxPython定时器wx.Timer简单应用实例

    # -*- coding: utf-8 -*- ######################################################## ## 这是wxPython定时器wx. ...

  6. WinForm LED循环显示信息,使用定时器Threading.Timer

    原文:WinForm LED循环显示信息,使用定时器Threading.Timer 这里用一个示例来演示timer如何使用. 示例:LED屏幕显示 描述:这个示例其实很简单,LED屏幕上显示3个信息: ...

  7. Binder框架在Framework层的C++中的使用

    Binder框架在Framework层的C++中的使用 转自:http://blog.csdn.net/a345017062/article/details/6175519 关于Binder在C++层 ...

  8. Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠

    Arduino ESP32 通过定时器(Timer)功能唤醒深度睡眠 通过定时器功能,设置5秒,时间到就唤醒深度睡眠 实例代码 /*通过定时器功能唤醒深度睡眠(设置为5秒) */#define uS_ ...

  9. 应用程序框架 Application Framework

    转自:http://www.cnblogs.com/BigTall/archive/2007/12/06/985101.html 应用程序框架设计之前言 要做一个应用程序框架的念头Bigtall在几年 ...

  10. python timer怎么用_python定时器(Timer)用法简单实例

    python定时器(Timer)用法简单实例 本文实例讲述了python定时器(Timer)用法.分享给大家供大家参考.具体如下: # encoding: UTF-8 import threading ...

最新文章

  1. 大二上学数据结构和操作系统_毕业后的工作比上学要重要得多。 这是数据。...
  2. 学python的好处-学习python有什么好处?python强大之处在哪?
  3. 一起谈.NET技术,浅析购物车的实现
  4. 【抽奖直播】今日16:30,云信特邀部长大人给你抽6s!
  5. Android蓝牙无法通信,android.bluetooth.BluetoothSocket无法连接
  6. 思考如何保证线程并行的数据安全性
  7. oracle删除本地文件权限,使用 UNIX 权限保护文件
  8. 现代程序设计 作业9 - 综合练习
  9. C#LeetCode刷题-二叉搜索树
  10. word 产生很多temp 不显示_word表格中文字显示到最下面的时候不自动换页-解决办法...
  11. xp系统wep服务器,iis 6.0 完整安装包 适用xp
  12. 断层约束的等值线追踪
  13. ASP.NET 安全认证(三)
  14. 大数据hive篇--同比环比
  15. 第019讲:函数:我的地盘听我的 | 课后测试题及答案(小甲鱼)
  16. CCLE(Cancer Cell Line Encyclopedia)数据库使用
  17. 如何制作一个完美的全屏视频H5
  18. 认识你7年后终于领证了 2019-09-16
  19. 博客中的动态图片如何制作
  20. phpcms api接口开发

热门文章

  1. 690 - Pipeline Scheduling (DFS + 状态压缩 + 剪枝)
  2. [cocos2dx笔记015]关于cocos2dx Button三种状态说明
  3. WLAN安全问题详解
  4. 网络安全——局域网内网络攻击手段(MAC地址攻击、ARP攻击、DHCP攻击)
  5. PTA(BasicLevel)-1009 说反话
  6. Django---简单from表单提交
  7. java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理...
  8. 创建Dockerfile,构建jdk+tomcat环境
  9. ko.js循环绑定值问题(工作遇见)
  10. Log42j 源代码分析:日志回滚