使用TimerTask做每月定时执行任务.

原创 2004年06月29日 12:36:00

/**
 * <p>Title: SubBillingTimer </p>
 * <p>Description:概要说明:设置定时发送包月计费包.

                  部分属性变量的解释:
                 
                  部分函数/方法的解释:
                  1.setTimer()   设置执行任务时的特定时间._timer.schedule(new SubBillingTimer(), date);
                  2.subBilling() 绑定计费包并发送.
                  3.run() 到已经特定的时间就执行,并调用subBilling(),然后在调用setTimer()设置下个月的特定时间
                 
 */

import java.util.Calendar;
import java.util.Date;
import java.util.TimerTask;
import java.util.Timer;

public class SubBillingTimer extends TimerTask {
  private Timer _timer;
  private int _day = 21;
  private int _hour = 2;

  public SubBillingTimer() {
   
  }

  public void run() {
 
    if(initConfigure.DEBUG_LEVEL > 8) {
     
 
      System.out.println(" -- Sub Billing Timer start run...");
    }
 
    subBilling();
    setTimer(_day, _hour, true);
  }

  public void setTimer(int day, int hour) {
    setTimer(day, hour, false);
  }

  public void setTimer(int day, int hour, boolean bgNextMonth) {
    _day = day;
    _hour = hour;

    Calendar cale = Calendar.getInstance();//Gets a calendar using the default time zone and locale.
    if(bgNextMonth || cale.get(cale.DAY_OF_MONTH) >= day) {//超过这个天数或者下个月为真,就是设定时间任务为下个月
      cale.set(cale.MONTH, cale.get(cale.MONTH) + 1);
    }
    Date date = new Date(cale.get(cale.YEAR) - 1900, cale.get(cale.MONTH), day, hour, 0);
    if(_timer == null) {
      _timer = new Timer();
    }
      System.out.println("Set SubBilling Timer["+date+":"+(date.getTime() - System.currentTimeMillis())+"]: " + _timer.toString());
  
    _timer.schedule(new SubBillingTimer(), date);//Schedules the specified task for execution at the specified time.设定时间
  }

  public void stop() {
    this.cancel();
    _timer.cancel();
  }

  private void subBilling() {
   }

  public static void main(String[] args) {
    SubBillingTimer sub_timer = new SubBillingTimer();
    sub_timer.setTimer(21, 2);
  }
}

版权声明:本文为博主原创文章,转载请注明来源。

Java 中Timer和TimerTask 定时器和定时任务使用的例子

这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是schedu...
  • kalision
  • kalision
  • 2012年06月26日 14:39
  • 79385

java Timer 定时每天凌晨1点执行任务

import java.util.TimerTask; /** * 执行内容 * @author admin_Hzw * */ public class Task extends TimerT...
  • hzw2312
  • hzw2312
  • 2013年10月28日 16:18
  • 46286

System.Timers.Timer 定时执行程序

System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒         private void Form1_Loa...
  • ybhjx
  • ybhjx
  • 2016年12月16日 22:58
  • 1528

Timer的缺陷-不按定时时间执行【已入坑】

公司做项目,其中涉及到一个游戏的业务逻辑,需要使用定时类去执行,在使用Timer的时候,发现总是出现奇怪的问题。 如下代码: package com.yifeng.test22; import ...
  • liuyifeng1920
  • liuyifeng1920
  • 2016年11月11日 10:20
  • 1995

timer.schedule —— timer定时器的用法

java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。 一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,Timer...
  • lintianlin
  • lintianlin
  • 2014年10月28日 15:28
  • 11412

java Timer(定时调用、实现固定时间执行)

 java Timer(定时调用、实现固定时间执行)     最近需要用到定时调用的功能。可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识。   其...
  • java_2017_csdn
  • java_2017_csdn
  • 2017年09月22日 10:15
  • 348

【Java】利用Timer与TimerTask定时执行任务

在Java里面定时执行一条任务多用于线程与进程配合Thread.currentThread().sleep(XXX);来实现,但是一些小型的任务其实完全利用Timer与TimerTask定时执行,Ti...
  • yongh701
  • yongh701
  • 2015年03月01日 08:38
  • 1791

浅谈java定时任务:TimerTask

java 定时任务TimerTask定时任务有很多种实现,网上也有很多开源的定时任务框架可以参考,但博主只简单介绍一下博主使用到的四种定时任务的实现:Timer和TimerTaks、spring、qu...
  • Y18630246793194530
  • Y18630246793194530
  • 2017年03月31日 20:51
  • 288

Spring定时任务的实现方式--Timer和TimerTask

Timer实际上是个线程,它可以定时调度一个TimerTask对象。一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内。 方式一:使用配置文件 1.写一个...
  • qq_32786873
  • qq_32786873
  • 2016年11月03日 17:00
  • 986

Timer TimerTask 定时任务 Timer was canceled TimerTask is scheduled already

android开发中经常会遇到定时器需求(比如两秒之后销毁Dialog),实现方法也有很多种,今天就介绍一种很好用的Timer方式,以及使用中可能会遇到的问题。基本信息1.Timer是一种定时器工具,...
  • HandsomeFuHS
  • HandsomeFuHS
  • 2017年03月27日 11:16
  • 717
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用TimerTask做每月定时执行任务.
举报原因:
原因补充:

(最多只允许输入30个字)