文档章节

Scheduling Tasks

Rksi5
 Rksi5
发布于 2014/11/21 02:59
字数 331
阅读 634
收藏 4

在spring的<task:*> XML名字空间功能一样,使用在Configuration类如下:
    @Configuration
    @EnableScheduling
    public class AppConfig {
        //@Bean 定义
    }
    在spring容器管理bean中检测@Scheduled注解。如:
    package com.myco.task;
    public class MyTask {
        @Scheduled(fixedRate=1000)
        public void work() {
            //task execution logic
        }
    }
    
    下面的配置保证MyTask.work()每1s调用一次
    @Configuration
    @EnableScheduling
    public class AppConfig {
        @Bean
        public MyTask task() {
            return new MyTask();
        }
    }

    或者,若MyTask使用@Component注解,下面配置可以保证它的@Scheduled方法间隔执行
    @Configuration
    ComponentScan(basePackages="com.myco.tasks")
    public class AppConfig {
        
    }
    
    @Scheduled方法甚至可以直接声明在@Configuration的类:
    @Configuration
    @EnableScheduling
    public class AppConfig {
        @Scheduled(fixedRate=1000)
        public void work() {
            // task execution logic
        }
    }
    
    上述场景中,默认使用的单线程执行,当需要更多线程控制时,一个@Configuration类可以实现SchedulingConfigurer接口。
    这容许访问底层实例,怎样定制Executor执行调度任务:
    @Configuration
    @EnableScheduling
    public class AppConfig implements SchedulingConfigurer {
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            taskRegistrar.setScheduler(taskExecutor());
        }
        @Bean(destroyMethod="shutdown")
        public Executor taskExecutor() {
            return Executors.newScheduledThreadPool(100);
        }
    }
    //destroyMethod="shutdown"当spring应用上下文关闭时确保任务执行器能正确的关闭
    实现SchedulingConfigurer也容许通过ScheduledTaskRegistrar细粒度控制任务注册。
    如以下配置特定bean方法的执行每一个自定义实现:
    @Configuration
    @EnableScheduling
    public class AppConfig implements SchedulingConfigurer {
        @Override
        public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
            taskRegistrar.setScheduler(taskScheduler());
            taskRegistrar.addTriggerTask(
                new Runnable() {
                    public void run() {
                        myTask().work();
                    }
                },
                new CustomTrigger()
            );
        }
        @Bean(destroyMethod="shutdown")
        public Executor taskScheduler() {
            return Executors.newScheduledThreadPool(42);
        }
        
        @Bean
        public MyTask myTask() {
            return new MyTask();
        }
    }

© 著作权归作者所有

共有 人打赏支持
Rksi5
粉丝 1
博文 41
码字总数 50463
作品 0
深圳
程序员
GANTTIC 3.1 发布,项目管理系统

GANTTIC 是一个基于Web的项目管理系统,用于安排项目过程中各种资源的协作,提供了用户友好的图形化界面和交互式甘特图,实现实时的协作功能。可作为微软 Project 工具的替换品。 Changes: 1...

红薯
2011/04/07
490
2
Spring boot 使用Scheduling Tasks笔记

前言:spring boot版本是2.0.5 创建好maven工程后,完成pom文件,如下: 只需要两个依赖和一个插件 下面是代码: 下面是springboot启动类 启动程序后验证程序结果: 参考资料: Scheduling T...

休辞醉倒
10/12
0
0
Apache Mesos 0.22.1 发布,集群管理器

Apache Mesos 0.22.1 发布,此版本更新内容: Bug 修复 [MESOS-1795] - Assertion failure in state abstraction crashes JVM [MESOS-2161] - AbstractState JNI check fails for Marathon ......

oschina
2015/06/01
1K
0
JAVA CONCURRENCY EXECUTORS 介绍Java并发处理线程池

I would make a fool out of myself if I tell you that util.concurrent APIs kicks cheetah's ass when the classes are available since 2004. However, there are some cool features wh......

Oscarfff
2016/05/20
40
0
海洋饼干/dotnet-tpl-dataflow

TPL Dataflow This project is a complete port of the System.Threading.Tasks.Dataflow assembly to support .NET 4.0 and newer. TPL Dataflow promotes actor/agent-oriented designs th......

海洋饼干
2015/04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linuxCool
3分钟前
0
0
SpringBoot内置定时任务

springBoot内置定时任务 应用场景 业务监控,定时发送邮件,定时删除缓存等等。 Spring Boot 内置定时 pom 包配置 <dependencies> <dependency> <groupId>org.springframework.b......

Grittan
8分钟前
1
1
在 Linux 中基于密钥认证的 SSH的配置方法

什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议。无论何时使用 SSH 在无安全网络上发...

linuxprobe16
25分钟前
0
0
sed命令

10月17日任务 9.4/9.5 sed 1.sed(上)(下) 1.sed 匹配功能 #sed -n ‘/root/’ p test.txt 将带有root的内容打印出来 同时支持 . * 还有 + 不过需要脱译,或者在前面选项加r。 支持{ } 支...

hhpuppy
36分钟前
1
0
day120-20181018-英语流利阅读-待学习

千禧一代注意了:一大波公司正向你的钱包袭来 Daniel 2018-10-18 1.今日导读 这几年,你有没有发现,不管是在微信公众号还是在抖音,有越来越多的商家和品牌开始玩起了网络用语和表情包,从卖...

飞鱼说编程
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部