注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一线天色 天宇星辰

天下武功,唯快不破

 
 
 

日志

 
 

Java定时任务的简单实现  

2011-01-02 18:34:43|  分类: 软件开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Spring为我们提供了很方便的定时任务处理,但是不用Spring呢?JDK也给提供了一个简单的定时任务处理,废话不多说,贴上源码

package com.yhj.timeTask;< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

 

import java.util.TimerTask;

 

import com.yhj.common.date.DateUtil;

/**

 * 要执行的定时任务

 * com.yhj.timeTask.PrintTask.java

 * @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:24:01

 */

public class PrintTask extends TimerTask {

 

    @Override

    public void run() {

       System.out.println(DateUtil.getCurrentChineseDate());

    }

 

}

package com.yhj.timer;

 

import java.text.ParseException;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

 

import com.yhj.common.date.DateUtil;

import com.yhj.timeTask.PrintTask;

 

/**

 * 计时器

 * com.yhj.timer.PrintTimer.java

 * @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:24:49

 */

public class PrintTimer {

    /**

     * 计时器

     */

    private  Timer timer =new Timer();

    /**

     * 每天执行一次

     * @param task

     * @param time 要求执行格式 hh:mn:ss

     * @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:28:11

     * @throws InterruptedException

     * @throws ParseException

     */

    public void doEveryDay(TimerTask task,String time) throws InterruptedException, ParseException {

       time=DateUtil.getCurrentDateStr().substring(0,11)+time;

       long milliSeconds=DateUtil.compare(new Date(), DateUtil.praseDate(time), DateUtil.ONE_MILLI_SECOND);

       Thread.sleep(Math.abs(milliSeconds));

       timer.scheduleAtFixedRate(task,new Date(), DateUtil.ONE_DAY);

    }

    /**

     * 在某个时间点执行一次

     * @param task

     * @param date

     * @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:29:29

     */

    public void doOnce(TimerTask task,Date date) {

       timer.schedule(task, date);

    }

    /**

     * 每隔多长时间执行一次

     * @param task

     * @param milliSeconds

     * @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:53:54

     */

    public void doWithRepeat(TimerTask task,long milliSeconds) {

       timer.scheduleAtFixedRate(task,0, milliSeconds);

    }

 

}

package com.yhj.clint;

 

import com.yhj.timeTask.PrintTask;

import com.yhj.timer.PrintTimer;

 

public class Clint {

 

    /**

     * @param args

     * @author 一线天色 天宇星辰 创建于 2011-1-2 下午04:55:19

     */

    public static void main(String[] args) {

       new PrintTimer().doWithRepeat(new PrintTask(), 1000);

 

    }

 

}

对于该调用哪个方法呢?参见JDK(如下)

方法摘要

 void

cancel()
          
终止此计时器,丢弃所有当前已安排的任务。

 int

purge()
          
从此计时器的任务队列中移除所有已取消的任务。

 void

schedule(TimerTask task, Date time)
          
安排在指定的时间执行指定的任务。

 void

schedule(TimerTask task, Date firstTime, long period)
          
安排指定的任务在指定的时间开始进行重复的固定延迟执行

 void

schedule(TimerTask task, long delay)
          
安排在指定延迟后执行指定的任务。

 void

schedule(TimerTask task, long delay, long period)
          
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行

 void

scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
          
安排指定的任务在指定的时间开始进行重复的固定速率执行

 void

scheduleAtFixedRate(TimerTask task, long delay, long period)
          
安排指定的任务在指定的延迟后开始进行重复的固定速率执行

 下面是我的程序的运行结果,如图所示,一个1秒执行一次的定时任务就搞定了,简单吧?(当然最好还是用框架里面提供的定时任务处理方法)

Java定时任务的简单实现 - 一线天色 天宇星辰 - 一线天色 天宇星辰

 

  评论这张
 
阅读(143621)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017