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

如题所述

Quartz定时机制
首先导入jar包到程序内 quartz-all-1.6.0.jar

然后创建一个XML
TimeConfig.xml 名字可以自己定义

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="mainTask" class="net.timed.MainTask"/> //你要执行的任务类
//jar类
<bean id="mainJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="mainTask"/>//将你的类添加到定时器当中
</property>
<property name="targetMethod">
<value>execute</value> //定时执行类里面的哪个方法
</property>
</bean>

<bean id="timeTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="mainJob"/>
</property>
<!--
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

上面这个是quartz的语法 定时单位
-->
<property name="cronExpression">
<value>0 0/5 * * * ?</value> //定时的语法
</property>
</bean>
<bean id="sfb" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="timeTrigger"/>
</list>
</property>
</bean>
</beans>

//下面这个类就是我在XML中引入的类
package net.timed;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainTask {
public void execute() throws IOException
{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("do my job"+dateFormat.format(new Date()));
Runtime.getRuntime().exec("cmd /c start E:/mbl/BusinessOffice/MoneDB/bin/bakup.bat");
}
}

然后在web.xml中把这个TimeConfig.xml添加进去作为监听
系统启动的时候自动就监听这个事件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
/WEB-INF/TimerConfig.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

这个是quartz spring的定时机制 请仔细的看看 如果可以请给分哦
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-21
while(true){

里面写时间的判断
}

在Java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的...
"0 15 10 ? * *" 每天上午10:15触发 "0 15 10 * * ?" 每天上午10:15触发 "0 15 10 * * ? *" 每天上午10:15触发 "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 "0 0\/5 14 * * ?" 在每天下午2点...

用java写一个服务程序定时执行任务,该怎么设计
二、循环执行设置定时任务的时候,往往我们需要重复的执行这样任务,每隔一段时间执行一次,而上面的方法是只执行一次的,这样就用到了schedule方法的是另一个重载函数public void schedule(TimerTask task,long delay,long period)前两个参数就不用说什么了,最后一个参数就是间隔的时间,又是个long型的...

如何实现定时任务- Java Timer\/TimerTask 源码解析
当从队列中移除任务,或者是修改任务执行时间之后,队列会自动排序。始终保持执行时间最早的任务在队首。 那么这是如何实现的呢?看一下TaskQueue的源码就清楚了 可以看到其实TaskQueue内部就是基于数组实现了一个最小堆 (balanced binary heap), 堆中元素根据 执行时间nextExecutionTime排序,执行时间最早的...

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

...设置个定时器,使其每隔几个小时自动执行一个任务?
如果是简单的烂代码,写个死循环,获取当前时间,如果时间到了你想要的时候就执行你想要执行的方法。如果要写的好点。起一个线程,线程里给个死循环,获取当前时间,如果为你想要的时间,就另外起一个线程跑你要的程序,如果不是则当前线程睡30秒或者1分钟什么的。代码如下:public class Task1 {...

怎样用java做个定时器,每个星期一中午12点整执行doXX这一动作。越详细...
主类:package tiwen4; import java.util.Calendar; import java.util.Timer; public class quartz { public static void main(String[] args) { try{ Calendar cal = Calendar.getInstance();\/\/设置定时时间 cal.add(Calendar.DATE, 0);\/\/表示从今天的12点开始跑起来,如果当前时间超过12点会...

java定时任务的定时表达式,每天早晨6:是每个月的1号和15号执行任务
Java定时任务的定时表达式实现中,我们可以看到一个例子,展示了如何在每天早晨6点,以及每个月的1号和15号执行特定的任务。下面的代码片段展示了如何使用`java.util.Timer`和`TimerTask`类来实现这个需求:java public class MyTimer { public static void main(String[] args) { Timer timer1 = new...

java 怎么定义一个方法在整个系统中每隔多少时间(时间自己定义)就调 ...
继承Thread类,或者实现Runnable类,在run()方法里面,while(true){ Sleep(1000);\/\/等1000毫秒,具体的时间自己定 \/\/做你要做的东西 } 然后在程序启动的时候,start这个线程就可以。

用java实现定时任务要稳定的。谁帮实现一下。 比如: 每天早上8点输出一 ...
如果是linux,可以使用linux的cron服务来每天8点运行你的程序 如果不是或者没有条件使用cron,可以考虑使用java的开源组件quartz,它完全支持cron表达式来声明定时任务,也易于和spring集成。楼上已经给出quartz的用法了。如果要纯粹自己写一个程序的话:public class Test { public static void main(String[...

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

相似回答