
正文
java延时执行某段代码 java实现延迟发送
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在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"
""
beans
bean id="mainTask" class="net.timed.MainTask"/ //java延时执行某段代码你要执行java延时执行某段代码的任务类
//jar类
bean id="mainJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
property name="targetObject"
ref bean="mainTask"///将你的类添加到定时器当中
/property
property name="targetMethod"
valueexecute/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"
value0 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
//下面这个类就是java延时执行某段代码我在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=""
xmlns:xsi=""
xsi:schemaLocation="
"
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-fileindex.jsp/welcome-file
/welcome-file-list
/web-app
这个是quartz spring的定时机制 请仔细的看看 如果可以请给分哦
相关问答
Q1: 求java代码,实现每30分钟循环执行一次一段代码
可以用Timer来实现
把java延时执行某段代码你写java延时执行某段代码的代码添加到一个监听器中
然后创建Timer对象 设置为30分钟执行一次 再start()就ok
void test()
{
Timer timer=new Timer(30*60*1000,new ActionListener(
public void actionPerformed()
{
//楼主java延时执行某段代码你java延时执行某段代码的代码
}
)).start();
}
Q2: java中,如何能做到这种效果: 程序运行到特定代码行的时候,等待用户触发某个事件才继续运行。
要使用线程 wait 和唤醒
while(条件)
wait();
while(条件)
//唤醒线程wait(),执行wait前的动作
notifyAll();
Q3: java怎么指定某段代码在固定时间点前执行
package thread.timer;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
public static void main(String[] args) {
Timer t = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task is processing.");// 此处可以插入自己想运行的代码片段
}
};
Calendar c = Calendar.getInstance();
c.set(Calendar.MINUTE, 26);// 时间可以自己设置
t.schedule(task, c.getTime());
}
}
Q4: 如何停止执行java的时候执行一段代码
这个可以实现啊
多线程进行计时
如果是图形界面的话
然后用actionlistener监听window.close()
然后执行一段代码在结束就行了
Q5: java timer 设置了延迟1秒每56秒执行一次。
由于你没有上传代码 没法具体分析 只能说下Timer的使用方法 你可以参考下 看看自己使用有没有问题 没有的话 提供下代码和错误日志 才能具体分析
方法摘要
void
cancel()
终止此计时器,丢弃所有当前已安排的任务。
int
purge()
从此计时器的任务队列中移除所有已取消的任务。
void
schedule(TimerTask task,
Date time)
安排在指定的时间执行指定的任务。
void
schedule(TimerTask task,
Date firstTime,
long period)
安排指定的任务在指定的时间开始进行重复的固定延迟执行。
void
schedule(TimerTask task,
long delay)
安排在指定延迟后执行指定的任务。
void
schedule(TimerTask task,
long delay, long period)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
void
scheduleAtFixedRate(TimerTask task,
Date firstTime,
long period)
安排指定的任务在指定的时间开始进行重复的固定速率执行。
void
scheduleAtFixedRate(TimerTask task,
long delay, long period)
安排指定的任务在指定的延迟后开始进行重复的固定速率执行。
java延时执行某段代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java实现延迟发送、java延时执行某段代码的信息别忘了在本站进行查找喔。







