本文目录
- spring quartz 定时任务什么时候执行
- 如何监控java quartz定时器中的所有定时任务
- java中quartz定时任务的执行如何避免并发
- java quartz 定时需要的包
- java如何利用第三方Quartz实现定时任务
- Quartz的定时任务我要每隔24小时执行一次Quartz怎么设置
- spring中配置了quartz定时任务,怎么在后台用java代码获取定时任务的运行状态
- 怎么样让quartz定时任务在某个条件下立即执行
- quartz定时任务都能实现什么\
- quartz定时任务最小时间是多少
spring quartz 定时任务什么时候执行
《!-- 每天的24小时,每隔5分钟,获取邮件存库一次 --》《bean id=“GetEmailJob“ class=“com.suitong.mp.modules.monitor.action.GetEmailJob“》《/bean》《!-- 调用工作对象和工作方法 --》《bean id=“GetEmailTask“ class=“org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean“》《!-- 调用的类 --》《property name=“targetObject“》《ref bean=“GetEmailJob“/》《/property》《!-- 调用类中的方法 --》《property name=“targetMethod“》《value》work《/value》《/property》《/bean》《!-- 触发时间 --》《bean id=“GetEmailTime“ class=“org.springframework.scheduling.quartz.CronTriggerFactoryBean“》《property name=“jobDetail“》《ref bean=“GetEmailTask“/》《/property》《!-- cron表达式 --》《property name=“cronExpression“》《value》0 0/5 * * * ? *《/value》《!--每天的24小时(6-20点),每隔5分钟(0/5)获取邮件存库一次 [秒] [分] [小时] [日] [月] [周] [年]--》《/property》《/bean》《!-- 总管理类 如果将lazy-init=’false’那么容器启动就会执行调度程序 --》《bean id=“startQuertz“ lazy-init=“false“ autowire=“no“ class=“org.springframework.scheduling.quartz.SchedulerFactoryBean“》《property name=“triggers“》《list》《ref bean=“GetEmailTime“/》《/list》《/property》《/bean》《!-- 要调用的工作类 End--》在applicationContext.xml这样子配置即可。
如何监控java quartz定时器中的所有定时任务
监控用org.quartz.Scheduler//TriggerState:-1表示不存在,0表示正在运行,1表示暂停中int triggerState = scheduler.getTriggerState(trigger.getTriggerName(), trigger.getTriggerGroup());//启动scheduler.scheduleJob//暂停scheduler.pauseTrigger//移除scheduler.unscheduleJob
java中quartz定时任务的执行如何避免并发
只要在detail的参数里加上一句话就行了,把这个job设置成有状态的job《property name=“concurrent“ value=“false“ /》 扩展:通过concurrent属性指定任务的类型,默认情况下封装为无状态的任务,如果希望目标封装为有状态的任务,仅需要将concurrent设置为false就可以了。Spring通过名为concurrent的属性指定任务的类型,能够更直接地描述到任务执行的方式(有状态的任务不能并发执行,无状态的任务可并发执行)
java quartz 定时需要的包
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{@Overridepublic 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 cleanupTriggeroldTime 0/5 * * * * ?time 0/2 * * * * ?print job2014-12-03 17:06:40.031print job2014-12-03 17:06:42.015print job2014-12-03 17:06:44.016print job2014-12-03 17:06:46.019print job2014-12-03 17:06:48.019print job2014-12-03 17:06:50.020从输出的结果中可以看到,原本的定时任务为每5秒执行一次,但是由于后面对定时任务表达式做了修改,所以后来安照修改后的每2秒执行一次。
java如何利用第三方Quartz实现定时任务
给你一个简单的案例加详细注解
/** job是一个接口,只有一个方法void execute(JobExecutionContext context),* 被调度的作业(类)需实现该接口中execute()方法,* JobExecutionContext类提供了调度上下文的各种信息。每次执行该Job均重新创建一个Job实例*/public class MyJob implements Job {//MyJob类为需要定时执行的类,execute为定时执行的方法。一个定时任务对应一个Job实现类。@Overridepublic void execute(JobExecutionContext arg0) throws JobExecutionException {// TODO Auto-generated method stubperform();}public void perform(){ //执行报表统计入口函数//业务逻辑System.out.println(“执行时间:“+new Date());}}
public class QuartzTest5 {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();}}
Quartz的定时任务我要每隔24小时执行一次Quartz怎么设置
1、首先新建一个控制台程序,利用Nuget引入Quartz的程序包,同时会自动引入日志库,用于输入日志,如下图所示。
2、配置项目目录下的App.Config文件,如下图所示,注意configSections一定要放在第一个节点。
3、编写需要执行的任务逻辑,它继承了IJob接口,然后需要实现其中的Exxcute方法,任务逻辑的部分放在Execute里即可。
4、接下来开始编写定时任务程序,首先是初始化任务调度器,如下图所示。
5、然后利用JobBuilder建立任务关联到我们刚才创建的任务逻辑,在创建一个触发器,用来明确此任务在什么时间点执行,执行几次,最后执行start,即可进行任务。
6、最后像下面一样依次往调度器里叠加任务即可,最后统一的执行,如果他们的执行时间需要错开的话,修改执行时间即可。
spring中配置了quartz定时任务,怎么在后台用java代码获取定时任务的运行状态
public class SpringWiredBean implements ApplicationContextAware { private ApplicationContext context; public void setApplicationContext( org.springframework.context.ApplicationContext context) throws BeansException { this.context = context; } public void quartz() { Map《String, Trigger》 beans = context .getBeansOfType(org.quartz.Trigger.class); Set《String》 set = beans.keySet(); for (String key : set) { Trigger cronTrigger = beans.get(key); if (cronTrigger instanceof CronTrigger) { CronTrigger _cronTrigger = (CronTrigger) cronTrigger; } else if (cronTrigger instanceof SimpleTrigger) { SimpleTrigger _cronTrigger = (SimpleTrigger) cronTrigger; } else if (cronTrigger instanceof NthIncludedDayTrigger) { NthIncludedDayTrigger _cronTrigger = (NthIncludedDayTrigger) cronTrigger; } } }}
怎么样让quartz定时任务在某个条件下立即执行
要使用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即可。
quartz定时任务都能实现什么\
众所周知spring 的Quartz定时器的功能非常强大,可以在特定的年月日小时分秒的时间点触发时间,完成事件的调度,就像windows中得计划任务一样。下面看一个典型的Quartz定时器的实现: 1、首先实现一个用于被执行的类,这个类用于被定时器调度,这个类不需要继承任何类或者接口,代码如下: publicTestQuartz{ public void doSomething(){ //TODO } } 2、spring配置文件,具体配置 《!-- 被执行类 --》 《beanid=“testQuarzt“class=“test.testQuarzt“/》 《!-- 将testQuarzt注入到job中 --》 《beanid=“testQuartzJob“class=“org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean“》 《property name=“targetObject“ ref=“testQuarzt“ /》 《property name=“targetMethod“ value=“doSomething“ /》 《property name=“concurrent“ value=“false“ /》 《/bean》 《!-- 将job注入到定时触发器 --》 《beanid=“testTrigger“class=“org.springframework.scheduling.quartz.CronTriggerBean“》 《property name=“jobDetail“ ref=“testQuartzJob“ /》 《property name=“cronExpression“》 《value》0 0 6 * * ?《value》 《property》 《bean》
quartz定时任务最小时间是多少
Quartz是Job scheduling(作业调度)领域的一个开源项目,Quartz既可以单独使用也可以跟spring框架整合使用,在实际开发中一般会使用后者。使用Quartz可以开发一个或者多个定时任务,每个定时任务可以单独指定执行的时间,例如每隔1小时执行一次、每个月第一天上午10点执行一次、每个月最后一天下午5点执行一次等。主要配置的内容有配置自定义Job、任务描述、触发器、调度工厂等自动扫包注册任务对象注册JobDetail触发器调度工厂