您现在的位置是: 首页 > 汽车行情 汽车行情
java quartz 代码_java quarter_1
2024-10-29 11:43:14 76人已围观
简介java quartz 代码_java quarter 大家好,今天我想和大家讲解一下“java quartz 代码”的工作原理。为了让大家更好地理解这个问题,我将相关资料进行了分类,现在就让我们一起来学习吧。1.Spring+quartz 做定时任务时,每5分种执行一次,怎么写法2.java写
大家好,今天我想和大家讲解一下“java quartz 代码”的工作原理。为了让大家更好地理解这个问题,我将相关资料进行了分类,现在就让我们一起来学习吧。
1.Spring+quartz 做定时任务时,每5分种执行一次,怎么写法
2.java写一个定时器,定时对一个变量赋不同值,这个程序代码怎么写
3.java quartz job 执行时间配置
4.java在servlet里设置个定时器,让其在tomcat一运行时,自动每隔几个小时执行一个任务?
5.java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现?
6.用java的Quartz包定时调用方法,我想实现每隔半小时调用一次方法,那个配置文件中时间的配置符号咋写的了
Spring+quartz 做定时任务时,每5分种执行一次,怎么写法
写法如下:<beanid="StaticPageQuartz"class="com.test.quartz.pageconvertor.StaticPageConvertor"
/>
<beanid="BuildStaticPageTask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
<propertyname="targetObject"ref="StaticPageQuartz"/>
<propertyname="targetMethod"value="doHTMLConvertor"/>
<propertyname="concurrent"value="false"/>
</bean>
<beanid="BuildStaticPageTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<propertyname="jobDetail"ref="BuildStaticPageTask"/>
<propertyname="cronExpression"value="00/5***?"/><!--每五分钟执行一次--
</bean>
扩展资料:
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson创建。简单来说,Spring是一个分层的JavaSE/EE?full-stack(一站式)?轻量级开源框架。
Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。
Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或EJBs。Quartz的最新版本为Quartz2.3.0。
参考资料:
百度百科:spring参考资料:
百度百科:quartzjava写一个定时器,定时对一个变量赋不同值,这个程序代码怎么写
1.需要的jar包
实现定时任务 需要quartz-1.5.1.jar和commons-logging-1.1.jar。
2.定义定时任务配置类
该类主要进行定时任务时间的设置和设置对应的定时任务类。
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory;
public class Test{
/**
* 定时任务
*/
public static void cleanUpJob() {
try {
JobDetail jobDetail = new JobDetail();
jobDetail.setName("cleanup");
jobDetail.setJobClass(PrintJob.class);
CronTrigger trigger = new CronTrigger();
trigger.setName("cleanupTrigger");
trigger.setJobName("cleanup");
trigger.setCronExpression("0/5 * * * * ?");
Scheduler sch = StdSchedulerFactory.getDefaultScheduler();
sch.scheduleJob(jobDetail, trigger);
sch.start();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 修改定时任务时间
*/
public static void modifyJobTime(String triggerName, String time) {
System.out.println("modify~~~~~~~~~~~~~~~~");
try {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
System.out.println("triggerName " + triggerName);
CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerName, Scheduler.DEFAULT_GROUP);
if(trigger == null) {
return;
}
String oldTime = trigger.getCronExpression();
System.out.println("oldTime " + oldTime);
if (!oldTime.equalsIgnoreCase(time)) {
System.out.println("time " + time);
// 修改时间
trigger.setCronExpression(time);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
cleanUpJob();
modifyJobTime("cleanupTrigger", "0/2 * * * * ?");
}
}
3.定时任务类
该类主要定义定时任务执行的内容。
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class PrintJob implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String time = sdf.format(new Date());
System.out.println("print job" + time);
}
}
4.输出结果
modify~~~~~~~~~~~~~~~~
triggerName cleanupTrigger
oldTime 0/5 * * * * ?
time 0/2 * * * * ?
print job2014-12-03 17:06:40.031
print job2014-12-03 17:06:42.015
print job2014-12-03 17:06:44.016
print job2014-12-03 17:06:46.019
print job2014-12-03 17:06:48.019
print job2014-12-03 17:06:50.020
从输出的结果中可以看到,原本的定时任务为每5秒执行一次,但是由于后面对定时任务表达式做了修改,所以后来安照修改后的每2秒执行一次。
java quartz job 执行时间配置
import?java.util.Random;
import?java.util.Timer;
import?java.util.TimerTask;
public?class?MainEntry?{
private?int?a; public?void?setVal(){ Timer?timer?=?new?Timer(); //每隔一秒生成一个[1,100)内的随机整数,赋给成员a timer.schedule(new?TimerTask()?{?@Override
public?void?run()?{
Random?rand?=?new?Random();
setA(rand.nextInt(100));
}
},?1000); } public?void?setA(int?a)?{ this.a?=?a; } public?int?getA()?{ return?a; } public?static?void?main(String[]?args)?{ MainEntry?me?=?new?MainEntry(); me.setVal(); }}
java在servlet里设置个定时器,让其在tomcat一运行时,自动每隔几个小时执行一个任务?
第一步:引包
要使用Quartz,必须要引入以下这几个包:
1、log4j-1.2.16
2、quartz-2.1.7
3、slf4j-api-1.6.1.jar
4、slf4j-log4j12-1.6.1.jar
这些包都在下载的Quartz包里面包含着,因此没有必要为寻找这几个包而头疼。
第二步:创建要被定执行的任务类
这一步也很简单,只需要创建一个实现了org.quartz.Job接口的类,并实现这个接口的唯一一个方法execute(JobExecutionContext arg0) throws JobExecutionException即可。如:
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class myJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class myJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}
}
这个例子很简单,就不用解说了。
第三步:创建任务调度,并执行
这一步应该算是最难的一步的,但其实是非常简单的,直接上代码
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class Test {
public void go() throws Exception {
// 首先,必需要取得一个Scheduler的引用
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//jobs可以在scheduled的sched.start()方法前被调用
//job 1将每隔20秒执行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
Date ft = sched.scheduleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());
// job 2将每2分钟执行一次(在该分钟的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule("15 0/2 * * * ?")).build();
ft = sched.scheduleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: "+ trigger.getCronExpression());
// 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job
sched.start();
try {
//主线程等待一分钟
Thread.sleep(60L * 1000L);
} catch (Exception e) {}
//关闭定时调度,定时器不再工作
sched.shutdown(true);
}
public static void main(String[] args) throws Exception {
Test test = new Test();
test.go();
}
}
import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
public class Test {
public void go() throws Exception {
// 首先,必需要取得一个Scheduler的引用
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//jobs可以在scheduled的sched.start()方法前被调用
//job 1将每隔20秒执行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
Date ft = sched.scheduleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: " + trigger.getCronExpression());
// job 2将每2分钟执行一次(在该分钟的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule("15 0/2 * * * ?")).build();
ft = sched.scheduleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排执行于: " + sdf.format(ft) + ",并且以如下重复规则重复执行: "+ trigger.getCronExpression());
// 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job
sched.start();
try {
//主线程等待一分钟
Thread.sleep(60L * 1000L);
} catch (Exception e) {}
//关闭定时调度,定时器不再工作
sched.shutdown(true);
}
public static void main(String[] args) throws Exception {
Test test = new Test();
test.go();
}
}
OK了,Job1和Job2就会被安排为定时执行了。此时程序是可以执行的了,但是可能会输出WARN级别日志,这是因为没有加log4j的配置文件,加上配置文件,就OK了。这里需要说明的地方只有一个,其它的可以直接Copy到您的项目里面。看代码:
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现?
看你要求 如果复杂的定时 可以使用 定时框架 quartz,如果简单的定时可以使用package?test;import?java.util.Timer;
public?class?TimeTaskTest?{
public?static?void?main(String[]?args){
Timer?timer?=?new?Timer();? timer.schedule(new?Task(),?60?*?1000);}
}
package?test;
import?java.util.TimerTask;
public?class?Task?extends?TimerTask?{
public?void?run()
{System.out.println("定时任务执行");
}}
用java的Quartz包定时调用方法,我想实现每隔半小时调用一次方法,那个配置文件中时间的配置符号咋写的了
用spring quartz
public class MyJob{
//这里如果你定义实例变量,可用spring依赖注入,例如
private String job;
public void setJob(String job){
this.job = job;
}
//你要执行的操作
public void execute(){
}
}
spring 配置文件
beans-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id = "myJob" class="MyJob">
<!--如果有注入属性在这里写 <property name = "job" value="hihi"></property> -->
</bean>
<bean id = "myjobDetail" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myJob">
</property>
<property name="targetMethod" value="execute"></property>
</bean>
<bean id ="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="myjobDetail"/>
<!-- 秒 分 小时 天 月 年-->
<property name="cronExpression" value="0 25 * * * ?"/>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref bean = "triggerBean"/></list>
</property>
</bean>
</beans>
在主类中读取定义文件,任务计划自动运行。
public class Test(){
public void static main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("beans-config.xml");
}
}
将配置文件放在该项目的classpath下,一般你放在src目录下即可。也可以自己创建路径放置,在项目的.classpath中可配置下此路径。
最后导入spring的jar包就可以了。
<!-- 常用的corn表达式
*隔5秒执行一次:*/5 * * * * ?
*隔1分钟执行一次:0 */1 * * * ?
*23点执行一次:0 0 23 * * ?
*晨1点执行一次:0 0 1 * * ?
*月1号凌晨1点执行一次:0 0 1 1 * ?
*月最后一天23点执行一次:0 0 23 L * ?
*周星期天凌晨1点实行一次:0 0 1 ? * L
*在26分、29分、33分执行一次:0 26,29,33 * * * ?
*的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
-->
这是spring调用时,的符号公式
好了,关于“java quartz 代码”的话题就讲到这里了。希望大家能够对“java quartz 代码”有更深入的了解,并且从我的回答中得到一些启示。