JAVA定时执行任务,每天定时几点钟执行任务

JAVA定时执行任务,每天定时几点钟执行任务的示例如下:1.建立TimerManage类,设置时间点,时间点设置的管理类,代码如下:package com.pcitc.time;import java.util.Calendar;import java.util.Date;import java.util.Timer;public class TimerManager {//时间间隔private static final long PERIOD_DAY = 24 *...
JAVA定时执行任务,每天定时几点钟执行任务
JAVA定时执行任务,每天定时几点钟执行任务的示例如下:
1.建立TimerManage类,设置时间点,时间点设置的管理类,代码如下:
package com.pcitc.time;

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

public class TimerManager {

//时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;

public TimerManager() {
Calendar calendar = Calendar.getInstance();

/*** 定制每日2:00执行方法 ***/

calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

Date date=calendar.getTime(); //第一次执行定时任务的时间

//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}

Timer timer = new Timer();

NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task,date,PERIOD_DAY);
}

// 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}

}

TimerManager 这个类里面,一定要注意
时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执行。为了,避免这种情况发生,只能判断一下,如果发布或重启服务的时间晚于定时执行任务的时间,就在此基础上加一天。
2.建立NFDFlightDataTimerTask类,调用业务代码的类放在该类的run方法里面执行。
package com.pcitc.time;

import java.util.TimerTask;

import com.sun.istack.internal.logging.Logger;

public class NFDFlightDataTimerTask extends TimerTask {

private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);

@Override
public void run() {
try {
// 在这里写你要执行的内容
System.out.println("功能方法写在这里了...");
} catch (Exception e) {
log.info("-------------解析信息发生异常--------------");
}
}
}
3.在web容器中使用的话,可以配置上下文监听器,使容器在启动的时候加载该监听器,代码如下:
package com.pcitc.time;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class NFDFlightDataTaskListener implements ServletContextListener {

public void contextInitialized(ServletContextEvent event) {
new TimerManager();
}

public void contextDestroyed(ServletContextEvent event) {
}

}
4.在web.xml里面配置监听器
<listener>
<listener-class>
com.pcitc.time.NFDFlightDataTaskListener </listener-class></listener>2018-05-26
案例: 你想让他几点执行都ok

1.MyJob02
//首先我们需要定义一个任务类,比如为MyJob02 ,
//该类需要继承Job类,然后添加execute(JobExecutionContext context)方法,在
//这个方法中就是我们具体的任务执行的地方。
//由希望由调度程序执行的组件实现的接口
public class MyJob02 implements Job {

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
// 执行响应的任务.

System.out.println("HelloJob.execute,"+new Date());
}
2.
public static void main(String[] args) throws Exception {
//SchedulerFactory 是一个接口,用于Scheduler的创建和管理
SchedulerFactory factory = new StdSchedulerFactory();
//从工厂里面拿到一个scheduler实例
//计划表(可能翻译的不太贴切),现在我们有了要做的内容,
//与调度程序交互的主要API
/*
* Scheduler的生命期,从SchedulerFactory创建它时开始,
到Scheduler调用shutdown()方法时结束;Scheduler被创建后,
可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作
(如暂停Trigger)。但是,Scheduler只有在调用start()方法后,
才会真正地触发trigger(即执行job)
*/
Scheduler scheduler = factory.getScheduler();
//具体任务.
//用于定义作业的实例
//JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();

//Trigger(即触发器) - 定义执行给定作业的计划的组件
//TriggerBuilder - 用于定义/构建触发器实例
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
scheduler.scheduleJob(job, trigger);
scheduler.start();

}2018-07-09
mengvlog 阅读 10 次 更新于 2025-07-19 23:30:05 我来答关注问题0
  • java public class MyTimer { public static void main(String[] args) { Timer timer1 = new Timer();// 每天早上6:30执行Task1 timer1.schedule(new Task1(), getTargetDate(0, 6, 30, 0), 24 * 60 * 60 * 1000);// 每月1号执行Task2(类型1)timer1.schedule(new Task2(1),...

  • Java定时任务的定时表达式,若需要每天早晨6:30执行任务,可以使用cron表达式“30 6 * * *”。另外,如果需要设置其他时间的定时任务,可以根据具体需求制定相应的cron表达式。1. 关于每天早晨6:30执行任务的定时表达式:- 在Java中,我们常常使用cron表达式来设置定时任务。对于每天早晨6:30执行...

  •  翡希信息咨询 Java实现定时器的几种方法

    1. 使用Timer和TimerTask类 Timer和TimerTask简介:Timer和TimerTask是Java.util包下的类,专门用于实现定时任务。实现步骤:创建TimerTask定时器任务,通常通过匿名内部类的方式。创建Timer定时器,并调用其方法执行TimerTask任务。Timer的主要方法:schedule:在指定时间后执行一次任务,delay单位为毫秒。schedul...

  • timer.schedule( new java.util.TimerTask() { public void run() { //你要定时执行的功能 } }, 0, 30*1000);这里的参数顺序分别为:需要操作的功能、设定延迟的时间(单位:毫秒)、周期设定(每隔多长时间执行该操作,单位:毫秒)。例如,上述代码表示任务将在启动后立即执行,并且每隔30秒执行...

  •  百度网友6913137 在Java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的程序?具体代码怎么写?代码全点

    Quartz定时机制 首先导入jar包到程序内 quartz-all-1.6.0.jar 然后创建一个XML TimeConfig.xml 名字可以自己定义

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部