定时任务Timer
一、Timer介绍
java.util.Timer
java.util.TimerTask
Timer是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类,如下所示:
public abstract class TimerTask implements Runnable
可以通过继承该类,来实现自己的定时任务。
Timer定时器实例有多种构造方法:
Timer()
创建一个新计时器。
Timer(boolean isDaemon)
创建一个新计时器,可以指定其相关的线程作为守护程序运行。
Timer(String name)
创建一个新计时器,其相关的线程具有指定的名称。
Timer(String name, boolean isDaemon)
创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。
二、Timer方法
定时执行方法
1、在特定时间执行任务,只执行一次
- public void schedule(TimerTask task,Date time)
2、在特定时间之后执行任务,只执行一次
- public void schedule(TimerTask task,long delay)
3、指定第一次执行的时间,然后按照间隔时间,重复执行
- public void schedule(TimerTask task,Date firstTime,long period)
4、在特定延迟之后第一次执行,然后按照间隔时间,重复执行
- public void schedule(TimerTask task,long delay,long period)
参数:
delay: 延迟执行的毫秒数,即在delay毫秒之后第一次执行
period:重复执行的时间间隔
5、第一次执行之后,特定频率执行,与3同
- public void scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
6、在delay毫秒之后第一次执行,后按照特定频率执行
- public void scheduleAtFixedRate(TimerTask task,long delay,long period)
方法名称schedule()和scheduleAtFixedRate()两者的区别
<1>schedule()方法更注重保持间隔时间的稳定:保障每隔period时间可调用一次 <2>scheduleAtFixedRate()方法更注重保持执行频率的稳定:保障多次调用的频率趋近于period时间,如果任务执行时间大于period,会在任务执行之后马上执行下一次任务
Timer注销
- timer.cancel();
三、案例
1、特定时间后执行
- public void schedule(TimerTask task,long delay)
参数:
task为:执行任务
delay:时间毫秒数
方法的含义:
在delay毫秒后执行任务task,只执行一次。
案例:
1分钟后同步数据。
同步任务:

- package com.yank.framework.common;
- import java.util.TimerTask;
- public class SynchroTimerTask extends TimerTask {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- System.out.println("Synchro data to other servers.");
- }
- }

定时任务:

- package com.yank.framework.common;
- import java.util.Timer;
- import java.util.TimerTask;
- public class SynchroTest {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- TimerTask task = new SynchroTimerTask();
- Timer timer = new Timer();
- timer.schedule(task, 1000);
- }
- }

2、案例2:按点吃饭
首先定义吃饭的任务,制定饭点,没小时进行检查,到点就吃饭。

- package com.yank.framework.common;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.List;
- import java.util.TimerTask;
- /*
- * 定时吃饭
- * */
- public class EatTimerTask extends TimerTask {
- //吃饭时间
- private static List<Integer> eatTimes;
- /*
- * 静态初始化
- * */
- static {
- initEatTimes();
- }
- /*
- * 初始化吃饭时间
- * */
- private static void initEatTimes(){
- eatTimes = new ArrayList<Integer>();
- eatTimes.add(8);
- eatTimes.add(12);
- eatTimes.add(18);
- }
- /*
- * 执行
- * */
- @Override
- public void run() {
- // TODO Auto-generated method stub
- Calendar calendar = Calendar.getInstance();
- System.out.println("检查是否到了吃饭的点");
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- if(eatTimes.contains(hour))
- {
- System.out.println("饿了,吃饭...");
- }
- }
- }

定时检查执行:

- package com.yank.framework.common;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.Timer;
- import java.util.TimerTask;
- public class EatTimerTaskTest {
- public static void main(String[] arg){
- TimerTask task = new EatTimerTask();
- Calendar calendar= Calendar.getInstance();
- Date firstTime = calendar.getTime();
- //间隔:1小时
- long period = 1000 * 60 * 60;
- //测试时间每分钟一次
- //period = 1000 * 60;
- Timer timer = new Timer();
- timer.schedule(task, firstTime, period);
- }
- }

定时任务Timer的更多相关文章
- Java基础--定时任务Timer
Java基础--定时任务Timer 一.Timer介绍 java.util.Timer java.util.TimerTask Timer是一个定时器类,通过该类可以为指定的定时任务进行配置.Time ...
- Java基础--定时任务Timer(转载)
Java基础--定时任务Timer 一.Timer介绍 java.util.Timer java.util.TimerTask Timer是一个定时器类,通过该类可以为指定的定时任务进行配置.Time ...
- JAVA定时任务Timer
故事起因 因业务需要,写了一个定时任务Timer,任务将在每天的凌晨2点执行,代码顺利码完,一切就绪,开始测试.运行程序,为了节省时间,将系统时间调整为第二天凌晨1点59分,看着秒针滴答滴答的转动,期 ...
- Java定时任务Timer、TimerTask与ScheduledThreadPoolExecutor详解
定时任务就是在指定时间执行程序,或周期性执行计划任务.Java中实现定时任务的方法有很多,本文从从JDK自带的一些方法来实现定时任务的需求. 一.Timer和TimerTask Timer和Tim ...
- 详解java定时任务---Timer篇
一.简介 在java的jdk中提供了Timer.TimerTask两个类来做定时任务. Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,而TimerTask一个抽象类,它的子 ...
- Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)
在Java中,实现定时任务有多种方式,本文介绍4种,Timer和TimerTask.Spring.QuartZ.Linux Cron. 以上4种实现定时任务的方式,Timer是最简单的,不需要任何框架 ...
- 服务器启动完成执行定时任务Timer,TimerTask
由于项目需求:每隔一段时间就要调外部接口去进行某些操作,于是在网上找了一些资料,用了半天时间弄好了,代码: import java.util.TimerTask; public class Accou ...
- java定时任务Timer与ScheduledExecutorService<转>
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面LZ就其原理.实例以及Timer缺陷三个方面来解析java Timer定时器. ...
- java web定时任务---Timer
写在前面: 在最近的项目中需要每天定时对数据库表进行查询,并完成相关数据的更新操作.首先让我想到的是Timer类,记得在一开始维护那个老系统的时候,开了个接口,也涉及到了定时的操作.下面就记录下大概的 ...
- 定时任务-Timer
Timer类的全限定名 java.util.Timer java.util.Timer类的构造函数 public Timer(); public Timer(boolean isDaemon); pu ...
随机推荐
- xmpp 与服务器连接并身份验证成功
* XMPP的特点,所有的请求都是通过代理的方式实现的 * * 因为xmpp是经由网络服务器进行数据通讯的,因此所有的,因此所有的请求都是提交给服务器处理 * * 服务器处理完毕止呕,以代理的方 ...
- 【bzoj2901】矩阵求和 前缀和
题目描述 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. 输入 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一个矩阵. 接下来n行,每行n个非负整数,表示第二个矩阵. ...
- 2013 年 acm 长春现场赛
A - Hard Code Hdu 4813 题目大意:给你一坨字符串,让你输出其栅栏密码的解码形式 思路:水题模拟 #include<iostream> #include<cstd ...
- 刷题总结——谈笑风生(主席树+dfs序的应用)
题目: Description 设T 为一棵有根树,我们做如下的定义:• 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道高明到哪里去了”.• 设a 和 b 为 T 中的两个不同 ...
- 转 Linux文件管理
Linux文件管理 http://www.cnblogs.com/vamei/archive/2012/09/09/2676792.html 作者:Vamei 出处:http://www.cnblog ...
- noj 2069 赵信的往事 [yy题 无限gcd]
njczy2010 2069 Accepted 31MS 224K 1351Byte G++ 2014-11-13 13:32:56.0 坑爹的无限gcd,,,尼玛想好久,原来要x对y算一次,y再 ...
- shell的select脚本的简单入门
shell的select脚本的简单入门 语法:select var in ...;do break;doneecho $var 示例: #/bin/bash echo "what is yo ...
- Mybatis resultMap空值映射问题
参考博客:https://www.oschina.net/question/1032714_224673 http://stackoverflow.com/questions/22852383/how ...
- JS基础之BOM对象
BOM 对象 JavaScript分为 ECMAScript,DOM,BOM. BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其 ...
- 选取第K大数的快速选择算法和注意事项
快速选择算法,是一种能在大致O(N)的时间内选取数组中第k大或者k小的算法.其基本思路与快速排序算法类似,也是分治的思想. 其实这个算法是个基础算法,但是不常用,所以今天编的时候错了POJ2388,才 ...