java 编写定时器实例 每天定时执行和N分钟执行一次
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java定时器的使用,这里简单的说两种使用方式。
在这里我用的是线程,可以单独启动。
仅供参考!
第一种:要求程序定时执行某个方法,如:没5分钟扫描数据库tb_test表
package com.jwht.hbgs.datatransfer;
import java.io.IOException;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author ASLU
* @version 1.0
*/
public class TsMGap {
public TsMGap() {
}
public void go() throws IOException{
ThreadTimer th=new ThreadTimer();
th.start();//线程启动
}
public static void main(String[] args) { TsMGap tm = new TsMGap();
try{
tm.go();
}catch(Exception e){
e.printStackTrace();
}
}
}
package com.jwht.hbgs.datatransfer;
import java.util.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author ASLU
* @version 1.0
*/
public class ThreadTimer extends Thread{
public ThreadTimer() {
}
static int num=5;//分钟
public void start(){
//每5分钟执行一次定时任务
RefreshItem ri = new RefreshItem(60*ThreadTimer.num);
}
public static void main(String [] args){
ThreadTimer tm = new ThreadTimer();
tm.start();//启动ThreadTimer中start()方法。
}
public static class RefreshItem {
public RefreshItem(int seconds) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new RefreshTask(), new Date(), seconds * 1000);
}
class RefreshTask extends TimerTask {
public void run() {
//查询
TsManagerBean tm=new TsManagerBean();
tm.getTsTxSmsinfo();
tm.getTsTxSmsinfo2();
}
}
}
}
package com.jwht.hbgs.datatransfer;
import java.sql.*;
import java.util.*;
import java.util.Date;
import mon.*;
import java.text.*;
import com.jwht.hbgs.datatransfer.*;
import com.jwht.hbgs.smsoper.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author ASLU
* @version 1.0
* 2013年11月14日 09:42:03改发送后update iseend=1不删除数据
*/
public class TsManagerBean {
public TsManagerBean() {
}
public void getTsTxSmsinfo2(){
具体实现方法。
}
第二中:要求程序在某个特定时间去执行某项任务,如:要求程序每天晚上23:19:10去执行任务
创建启动线程的ShanChu类
package .dingshishanchu;
import java.io.IOException;
public class ShanChu {
public ShanChu() {
}
public void go() throws IOException{
ShanChuTimer th=new ShanChuTimer();
th.start();//线程启动
System.out.println("启动定时删除线程。
");
}
public static void main(String[] args) { ShanChu tm = new ShanChu();
try{
tm.go();
}catch(Exception e){
e.printStackTrace();
}
}
}
创建定时器ShanChuTimer
package .dingshishanchu;
import java.util.*;
public class ShanChuTimer extends Thread { public ShanChuTimer() {
}
private static final long PERIOD_DAY= 24*60*60*1000;//以毫秒为单位,24*60*60*1000是1天
public void start() {
RefreshItem ri = new RefreshItem();
}
public static void main(String[] args) {
ShanChuTimer tm = new ShanChuTimer();
tm.start();// 启动ThreadTimer中start()方法。
}
// 定制每天的xx:xx:xx执行,
// 每天的date时刻执行task, 仅执行一次
// timer.schedule(task, date);
public static class RefreshItem {
public RefreshItem() {
// timer.scheduleAtFixedRate(new RefreshTask(), new Date(),seconds *
// 200); //1000毫秒=1分钟
// 设置执行时间
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);// 每天
//这里说明一点,如果你启动任务的时间(上午10点)晚于你设定的时间(早上8点),程序会立马执行一次,这里需要将day+1默认推迟一天。
这里我设定的时间是晚上22点01分18秒,所以只要我在这个时间前启动就ok.
calendar.set(year, month, day, 22, 01, 18);//设置固定时间
Date date = calendar.getTime();
System.out.println("第一次执行时间是:"+date);
Timer timer = new Timer();
timer.schedule(new RefreshTask(), date, PERIOD_DAY);//间隔时间为PERIOD_DAY(1天)
}
class RefreshTask extends TimerTask {
public void run() {
ShanChuBean tm = new ShanChuBean();
System.out.println("执行定时删除进行中。
");
tm.del();
}
}
}
}
创建具体实现的ShanChuBean类
package .dingshishanchu;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ShanChuBean {
public ShanChuBean() {
}
public void del() {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式String loadpath = "D:/workspace/sc" + "/dir";
File file = new File(loadpath);// 里面输入特定目录
// System.out.println(loadpath);
// System.out.println("file.length() "+file.length());//需要loadpath指定到文件名,输出文件大
小
File temp = null;
File[] filelist = file.listFiles();
for (int i = 0; i < filelist.length; i++) {
temp = filelist[i];
if (temp.getName().endsWith("")) {// 获得文件名,如果后缀为“”,这个你自己写,就删除文件
temp.delete();// 删除文件}
System.out.println(df.format(new Date()) + " "
+ temp.getName() + " 删除成功。
");
}
}
if (filelist.length == 0)
System.out.println("没有文件可删除。
");
System.out.println("本次执行定时删除完成。
");
}
}。