对于这样的 *** 作最方便、高效的实现方式就是使用javautilTimer工具类。
private javautilTimer timer;//给你标注一下包,到时候别找错了
timer = new Timer(true);
timerschedule(
new javautilTimerTask() { public void run()
{ //你要定时执行的功能} }, 0, 301000);
第一个参数是要 *** 作的功能,一般匿名内部类,第二个参数是要设定延迟的时间,第三个参
数是周期的设定,每隔多长时间执行该 *** 作。
更详细的内容,自己找API Timer类看看吧
二、如果是需要Tomcat启动就能执行,不需要main方法的定时器的话:
webxml里面需要这么配置:
<listener>
<listener-class>
comInitListener
</listener-class>
</listener>
第一个类:InitListener
package comlistener;
import javautilCalendar;
import javautilDate;
import javautilTimer;
import javaxservletServletContextEvent;
import javaxservletServletContextListener;
/
系统启动时的监听类 初始化系统数据
@author jhoneder
/
public class InitListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
// context销毁时,销毁初始化数据
}
public void contextInitialized(ServletContextEvent event) {
// TODO Auto-generated method stub
try {
goTimmer();
} catch (Exception e) {
Systemoutprintln("失败:" + egetMessage());
}
}
private void goTimer() {
Timer timmerTask = new Timer();
Calendar calEnviron = CalendargetInstance();
// 每天的02:00am开始执行
calEnvironset(CalendarHOUR_OF_DAY, 2);
calEnvironset(CalendarMINUTE, 00);
// date为制定时间
Date dateSetter = new Date();
dateSetter = calEnvirongetTime();
// nowDate为当前时间
Date nowDateSetter = new Date();
// 所得时间差为,距现在待触发时间的间隔
long intervalEnviron = dateSettergetTime() - nowDateSettergetTime();
if (intervalEnviron < 0) {
calEnvironadd(CalendarDAY_OF_MONTH, 1);
dateSetter = calEnvirongetTime();
intervalEnviron = dateSettergetTime() - nowDateSettergetTime();
}
// 每24小时执行一次
timmerTaskschedule(new UseTimer(timmerTask), intervalEnviron, 1 1000 60 60 24);
}
}
第二个类:
package comlistener;
import javautilTimer;
import javautilTimerTask;
/
被调用执行类
@author Administrator
/
public class UseTimer extends TimerTask {
Timer timer = new Timer();
public UseTimer(Timer timer) {
thistimer = timer;
}
/
被调用具体的方法
/
public void run() {
Systemoutprintln("开始具体执行!");
}
}
不懂得话可以追问!
用spring quartz
public class MyJob{
//这里如果你定义实例变量,可用spring依赖注入,例如
private String job;
public void setJob(String job){
thisjob = job;
}
//你要执行的 *** 作
public void execute(){
}
}
spring 配置文件
beans-configxml
<xml version="10" encoding="UTF-8">
<beans xmlns=">
// 一天的毫秒数
long daySpan = 24 60 60 1000;
// 规定的每天时间15:33:30运行
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd '15:33:30'");
// 首次运行时间
Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")parse(sdfformat(new Date()));
// 如果今天的已经过了 首次运行时间就改为明天
if(SystemcurrentTimeMillis() > startTimegetTime())
startTime = new Date(startTimegetTime() + daySpan);
Timer t = new Timer();
TimerTask task = new TimerTask(){
@Override
public void run() {
// 要执行的代码
Systemerrprintln("xxxxxxxxx");
}
};
// 以每24小时执行一次
tscheduleAtFixedRate(task, startTime, daySpan);
开始->程序->附件->系统工具->任务计划->选择添加任务计划->点击下一步->点击(浏览),找到你想定时执行的class文件,一步一步完成,相信你能看懂的,前提要配置好classPath
看你要求 如果复杂的定时 可以使用 定时框架 quartz,如果简单的定时可以使用
package test;import javautilTimer;
public class TimeTaskTest {
public static void main(String[] args){
Timer timer = new Timer();
timerschedule(new Task(), 60 1000);
}
}
package test;
import javautilTimerTask;
public class Task extends TimerTask {
public void run()
{
Systemoutprintln("定时任务执行");
}
}
以上就是关于怎么在java后台,写个定时任务。比如,十分钟执行一次接口。全部的内容,包括:怎么在java后台,写个定时任务。比如,十分钟执行一次接口。、java定时器 每天凌晨 固定执行一个方法、java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)