您现在的位置是: 首页 > 汽车资讯 汽车资讯

java quartz jobdetail

佚名 2024-05-22 人已围观

简介javaquartzjobdetail如果您对javaquartzjobdetail感兴趣,那么我可以提供一些关于它的背景和特点的信息,以及一些相关的资源和建议。1.java如何在每一天的凌晨00:00:00自动运行程序?2.java定时执行问题:我想让一个Java代码在每小时的第25分钟

java quartz jobdetail

       如果您对java quartz jobdetail感兴趣,那么我可以提供一些关于它的背景和特点的信息,以及一些相关的资源和建议。

1.java如何在每一天的凌晨00:00:00自动运行程序?

2.java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现?

3.用java实现定时任务要稳定的。谁帮实现一下。 比如: 每天早上8点输出一句话。(天天早上8点都输出).

4.Java中定时存储数据 例如每隔5秒中存储一次。或者每天的10、12、2、4、6点存储数据怎样实现

5.Spring+quartz 做定时任务时,每5分种执行一次,怎么写法

java quartz jobdetail

java如何在每一天的凌晨00:00:00自动运行程序?

       LZ指的是定时任务吧

       在java里面做定时任务通常是线程的

       下面有个简单的定时任务(没验证是否好使 但基本是这个样子的)

       在web.xml里面增加一个监听

        <listener>

        <listener-class>CountListen</listener-class>

        </listener>

       具体代码如下

       import javax.servlet.ServletContextListener;

       import javax.servlet.ServletContextEvent;

       import java.util.*;

       public class CountListen

        implements ServletContextListener {

        private java.util.Timer timer = null;

        public void contextInitialized(ServletContextEvent event) {

        timer = new java.util.Timer(true);

        event.getServletContext().log("定时器已启动");

        System.out.println("定时器已启动");

        Date date = new Date(1900,1,1,23,59);

        timer.schedule(new SampleTask(event.getServletContext()),0,

        24 * 60 * 60 * 1000);

        event.getServletContext().log("已经添加任务调度表");

        System.out.println("已经添加任务调度表");

        }

        public void contextDestroyed(ServletContextEvent event) {

        timer.cancel();

        event.getServletContext().log("定时器销毁");

        }

       }

       import java.util.*;

       import javax.servlet.ServletContext;

       import com.founder.gongan.util.ConfigPropertie;

       import com.founder.gongan.manage.CountManager;

       import com.founder.botong.entity.EnumFolder;

       class SampleTask

        extends TimerTask {

        private static boolean isRunning = true;

        private ServletContext context = null;

        public SampleTask(ServletContext context) {

        this.context = context;

        }

        public void run() {

        if (isRunning) {

        isRunning = false;

        context.log("开始执行指定任务");

        System.out.println("开始执行指定任务");

        //指定的任务......

        isRunning = true;

        context.log("指定任务执行结束");

        System.out.println("指定任务执行结束");

        }else {

        context.log("上一次任务执行还未结束");

        }

        }

       }

java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现?

        Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能:

        持久性作业 - 就是保持调度定时的状态;

        作业管理 - 对调度作业进行有效的管理;

        1.任务job

        Job就是你想要实现的任务类。每一个Job必须实现的org.quartz.job接口。且需实现接口的Execute()方法。

        2.触发器Trigger

        Trigger为你执行任务的触发器,比如你想每天定时8点钟去打卡,Trigger就会设置在8点钟去执行该任务。

        Trigger主要有2种触发器器,分别为SimpleTrigger ,CornTrigger两种。

        3.调度器Scheduler

        Scheduler为任务调度器,它将任务Job和触发器Trigger整合起来。负责基于Trigger设定的时间来执行job。

        1.依赖

        2.编写job

        3.调用。

        JobExecutionContext 是一个包含了各种上下文信息的句柄,指向执行中的JobDetail 实例 和 执行完成的Trigger实例

        当Schedule调用一个Job时,就会将JobExecutionContext传递给Job的exceute()方法。

        Job能够通过JobExecutionContext对象访问到Quartz运行时候的环境以及Job本身的数据明细。我可以通过这个context来访问Trigger,Jobs相关的信息。

        1.使用Map获取

        在进行任务调度时,JobDataMap存储在JobExecutionContext中非常方便的进行获取。

        jobDataMap可以装载任何可序列化的对象。当job实例对象被执行的时候,这些参数会传递给Job

        放入参数

        取出参数

        Job中有一个StatefulJob子接口,代表着有状态的任务, 该接口是一个没有方法的标签接口 ,其目的就是让Quartz知道任务的类型,以便采用不同的执行方案。

        无状态任务在执行时,拥有自己的JobDataMap拷贝,每次执行时,都会创建一个新的实例,对JobData的更改不会影响下次的执行。而有状态任务共享同一个JobDataMap实例,每次任务执行对JobDataMap所做的更改都会保存下来,后面的执行可以看到这个更改。也就是每次执行任务后都会对后面的执行发生影响。

        正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行。

        如果你需要像日历一样,按照日程来触发任务,而不是像SimpleTrigger那样每隔定时间来触发,CornTrigger更加的实用。因为他是基于日历的作业调度器。

        使用CronTrigger,你可以指定“每个周五中午”,或者每个工作日的十点钟。或者每周一,像这样的日程安排触发。

        1.Cron Expression -Cron表达式

        Cron表达式是来配置,CronTrigger实例。Cron表达式是有7个子表达式组成的字符串,每个表达式都描述了一个单独的日程细节。这些表达式用空格来分割。分别表示如下

        1.Second 秒

        2.Minutes 分钟

        3.Hours小时

        4 Day of Month 月中的每天

        5 Month 月

        6 Day of Week 周中某天

        7 Year 年

        例如下面写一个每个9月19号,每5秒执行一次。

用java实现定时任务要稳定的。谁帮实现一下。 比如: 每天早上8点输出一句话。(天天早上8点都输出).

       用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=".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

参考资料:

百度百科:quartz

       今天关于“java quartz jobdetail”的讲解就到这里了。希望大家能够更深入地了解这个主题,并从我的回答中找到需要的信息。如果您有任何问题或需要进一步的信息,请随时告诉我。