怎么在java后台,写个定时任务。比如,十分钟执行一次接口。

怎么在java后台,写个定时任务。比如,十分钟执行一次接口。,第1张

对于这样的 *** 作最方便、高效的实现方式就是使用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分钟执行一次的,这个怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9513626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存