精华内容
下载资源
问答
  • spring 定时器

    2017-09-14 09:04:41
    spring-2.0.6.jar Spring框架的核心包 jta.jar 会用到包中的usertransaction,具体什么用此处暂时不论 quartz-1.6.0.jar 会用到CronTrigger这个类,通过表达式实现精确的定时 commons-logging-1.1.1.jar 日志管理包 ...
  • NULL 博文链接:https://liliugen.iteye.com/blog/761758
  • spring定时器

    2016-10-20 14:50:40
    一个spring定时器的一个小文档,详细,
  • 动态配置Spring定时器 添加定时任务:/scheduled/add-task 前端传递任务ID,cron表达式、待执行类路径、待执行方法名。 修改定时任务:/scheduled/update-task 前端传递任务ID,cron表达式、待执行类路径、待执行方法...
  • 使用spring 实现的两种定时任务,使用eclipse直接导入就可使用
  • Spring定时器quartz

    2019-03-18 01:05:08
    NULL 博文链接:https://ap0406708.iteye.com/blog/588695
  • NULL 博文链接:https://linlargy.iteye.com/blog/1846991
  • spring定时器简单的demo

    2018-04-28 09:29:31
    使用方法很简单,部署上去,打开服务器就可以了.不需要任何的操作. 主要看applicationContext.xml的配置就可以
  • spring定时器超级详细使用方法,如何配置合理使用定时器,做了详细的介绍分析,欢迎下载
  • spring定时器时间配置

    2012-03-08 12:13:02
    spring定时器时间配置.时间的设置规则,并有代码予以演示。
  • NULL 博文链接:https://beisicao.iteye.com/blog/1222365
  • spring定时器cron表达式生成
  • Spring定时器

    2017-07-25 15:26:57
    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.springfra
    <?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">

        <!-- 需要spring-support.jar包 -->
        
        <bean id="job" class="com.njg.spider.job.BaseJob">
             <property name="taskDao" ref="taskDao" ></property>
        </bean>

        <bean id="quartzClock" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="job"/>
            <property name="targetMethod" value="start"/>
            <property name="concurrent" value="false"/>
        </bean>
        
        <bean id="spider" class="org.springframework.scheduling.quartz.CronTriggerBean">
            <property name="jobDetail" ref="quartzClock"></property>
            <property name="cronExpression">
                <!-- 每天上午8点,12点,下午4点执行定时器 定时更新当天的信息 -->
                <value>0 0 8,12,16 * * ?</value>
                 <!-- 一个cron表达式有至少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下:  
                       1.秒(0-59)  
                       2.分钟(0-59)  
                       3.小时(0-23)  
                       4.月份中的日期(1-31)  
                       5.月份(1-12或SUN-DEC)  
                       6.星期中的日期(1-7或SUN-SAT)  
                       7.年份(1970-2099)   
                      例子:  
                       0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点  
                       0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟  
                       30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时  
                       0 0 8-5 ? * MON-FRI 每个工作日的工作时间  
                        
                       - 区间  
                       * 通配符  
                       ? 你不想设置那个字段  
                      -->  
            </property>
        </bean>
        
        <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
            <property name="triggers">  
                <list>
                    <ref bean="spider"></ref>
                </list>  
            </property>  
        </bean>
        
    </beans>
    展开全文
  • 目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。1.Java Timer定时首先继承java.util.TimerTask类实现run方法import java.util.TimerTask;public class EmailReportTask extends TimerTask{@...

    目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。

    1.Java Timer定时

    首先继承java.util.TimerTask类实现run方法

    import java.util.TimerTask;

    public class EmailReportTask extends TimerTask{

    @Override

    public void run() {

    ...

    }

    }

    在Spring定义

    ...

    配置Spring定时器

    86400000value>

    property>

    bean>

    timerTask属性告诉ScheduledTimerTask运行哪个。86400000代表24个小时

    启动Spring定时器

    Spring的TimerFactoryBean负责启动定时任务

    list>

    property>

    bean>

    scheduledTimerTasks里显示一个需要启动的定时器任务的列表。

    可以通过设置delay属性延迟启动

    86400000value>

    property>

    3600000value>

    property>

    bean>

    这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动

    2.Quartz定时器

    首先继承QuartzJobBean类实现executeInternal方法

    import org.quartz.JobExecutionContext;

    import org.quartz.JobExecutionException;

    import org.springframework.scheduling.quartz.QuartzJobBean;

    public class EmailReportJob extends QuartzJobBean{

    protected void executeInternal(JobExecutionContext arg0)

    throws JobExecutionException {

    ...

    }

    }

    在Spring中定义

    EmailReportJobvalue>

    property>

    entry>

    map>

    property>

    bean>

    在这里我们并没有直接声明一个EmailReportJob Bean,而是声明了一个JobDetailBean。这个是Quartz的特点。JobDetailBean是Quartz的org.quartz.JobDetail的子类,它要求通过jobClass属性来设置一个Job对象。

    使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的。JobDetail的jobDataAsMap属性接受一个Map,包括设置给jobClass的各种属性,当。JobDetailBean实例化时,它会将courseService Bean注入到EmailReportJob 的courseService 属性中。

    启动定时器

    Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作。Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean。

    SimpleTriggerBean与scheduledTimerTasks类似。指定工作的执行频度,模仿scheduledTimerTasks配置 .

    360000value>

    property>

    86400000value>

    property>

    bean>

    startDelay也是延迟1个小时启动

    CronTriggerBean指定工作的准确运行时间

    0 0 6 * * ?value>

    property>

    bean>

    属性cronExpression告诉何时触发。最神秘就是cron表达式:

    Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:

    1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)

    每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。

    启动定时器

    list>

    property>

    bean>

    triggers属性接受一组触发器。

    好了,本文内容到此结束了,写的还不错吧,有不足之处,欢迎各位大侠提出宝贵意见。

    展开全文
  • spring定时器所需jar包

    2018-04-25 14:48:26
    spring定时器所需jar包spring定时器所需jar包spring定时器所需jar包
  • spring定时器Scheduled和ScheduledExecutorService详细使用和分析

    目录

    一 基本使用方式

    二  @Scheduled 定时规则

    1)@Scheduled中fixedDelay使用

    2)@Scheduled中fixedRate使用

    3)@Scheduled中cron表达式的使用

    三 ScheduledExecutorService使用


    一 基本使用方式

    在spring中,我们可以用@Scheduled来做定时器, 它支持cron,固定周期定时,其使用方法如下

    @Component  // ①
    @EnableScheduling //②
    public class TestSchedule {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        @Scheduled(fixedDelay = 3000) //③
        private void testTask(){
            System.out.println("定时任务执行时间:" + LocalDateTime.now().format(dateTimeFormatter));
        }
    }

    以上代码注释

    ①是该类被容器自动管理

    ② @EnableScheduling注解使我们的scheduled定时器生效

    ③ @Scheduled(fixedDelay = 3000) 使用了该注解的方法,按指定的规则时间执行

    二  @Scheduled 定时规则

    1)@Scheduled中fixedDelay使用

    fixedDelay 固定延时,什么意思,fixedDelay值表示本次方法执行完成下次执行需要等待的时间,按照下面的代码,如果我们方法执行需要2000毫秒,那么我们方法下次执行时间是3000+2000=5000毫秒,代码如下

       DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        @Scheduled(fixedDelay = 3000)
        private void testTask() throws InterruptedException {
            Thread.sleep(2000);
            System.out.println("定时任务执行时间:" + LocalDateTime.now().format(dateTimeFormatter));
        }

    执行结果

    定时任务执行时间:2021-12-01 20:37:42
    定时任务执行时间:2021-12-01 20:37:47
    定时任务执行时间:2021-12-01 20:37:52
    定时任务执行时间:2021-12-01 20:37:57
    定时任务执行时间:2021-12-01 20:38:02
    定时任务执行时间:2021-12-01 20:38:07
    定时任务执行时间:2021-12-01 20:38:12
    定时任务执行时间:2021-12-01 20:38:17

    其中可以看出,我们方法执行周期等于fixedDelay+方法本身执行时间

    2)@Scheduled中fixedRate使用

    fixedRate 这个参数作用是什么呢,如下代码
       DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        @Scheduled(fixedRate = 3000)
        private void testTask() throws InterruptedException {
            Thread.sleep(2000);
            System.out.println("定时任务执行时间:" + LocalDateTime.now().format(dateTimeFormatter));
        }

    执行结果是:

    定时任务执行时间:2021-12-01 14:48:22
    定时任务执行时间:2021-12-01 14:48:25
    定时任务执行时间:2021-12-01 14:48:28
    定时任务执行时间:2021-12-01 14:48:31
    定时任务执行时间:2021-12-01 14:48:34

    从执行结果,可以看出,如果使用了fixedRate,如果方法本身执行时间小于fixedRate,那么方法下次执行时间就是 fixedRate设置的值

    如果方法中的执行时间大于fixedRate呢?

     DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        @Scheduled(fixedRate = 3000)
        private void testTask() throws InterruptedException {
            Thread.sleep(5000);
            System.out.println("定时任务执行时间:" + LocalDateTime.now().format(dateTimeFormatter));
        }

    执行结果

    定时任务执行时间:2021-12-01 14:51:16
    定时任务执行时间:2021-12-01 14:51:21
    定时任务执行时间:2021-12-01 14:51:26

    那么方法的执行周期就是按照方法执行时间

    3)@Scheduled中cron表达式的使用

    我们的定时器也可以按照cron方法来执行

       DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        @Scheduled(cron = "*/3 * * * * *")
        private void testTask() throws InterruptedException {
            System.out.println("定时任务执行时间:" + LocalDateTime.now().format(dateTimeFormatter));
        }

    每隔三秒执行1次

    如果我们方法执行也需要一定时间,会是怎样情况呢

    如果方法体执行时间小于cron设置的周期,就按照cron设置周期执行

    如果方法体执行时间大于cron设置周期,那么方法体执行周期就大于cron设置的周期,大家可以做实验

    三 ScheduledExecutorService使用

     DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            ScheduledExecutorService executorService=new ScheduledThreadPoolExecutor(1);
            executorService.scheduleAtFixedRate(()->{
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();e.printStackTrace();
                }
                System.out.println(dtf.format(LocalDateTime.now())+"dd");
            },1,3, TimeUnit.SECONDS);
    ScheduledExecutorService 里面有 scheduleAtFixedRate 和scheduleWithFixedDelay用法和我们上面所提定时器的fixedRate、fixedDelay的用法差不多.

    我们发现ScheduledExecutorService没有cron的相关调用方法

    四 思考

    1 ScheduledExecutorService 怎样才能实现cron表达式调用

    2 @Scheduled定时 和 ScheduledExecutorService定时有什么关系

    3  为什么要加上@EnableScheduling ,@Scheduled才生效

    4 @Scheduled在什么地方、什么时候解析的

    5 定时器原理有哪些,ScheduledExecutorService定时器的原理是什么

    展开全文
  • 你既然使用quartz 最后自己下载一份他的完整文档 这些 都是基本功能 比如 暂停 恢复 删除我给写下核心代码 具体实现自己看下吧 我这里现在没那个环境没法写全给你 不好意思啦//暂停Schedulerscheduler=...

    你既然使用quartz 最后自己下载一份他的完整文档 这些 都是基本功能 比如 暂停 恢复  删除

    我给写下核心代码 具体实现自己看下吧 我这里现在没那个环境没法写全给你 不好意思啦//暂停

    Scheduler scheduler = schedulerFactoryBean.getScheduler();

    JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());

    scheduler.pauseJob(jobKey);

    //恢复

    Scheduler scheduler = schedulerFactoryBean.getScheduler();

    JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());

    scheduler.resumeJob(jobKey);

    //删除

    Scheduler scheduler = schedulerFactoryBean.getScheduler();

    JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());

    scheduler.deleteJob(jobKey);

    展开全文
  • spring定时器spring定时器spring定时器spring定时器spring定时器

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,988
精华内容 8,795
关键字:

spring定时器

spring 订阅
友情链接: target.zip