文档章节

Scheduling Tasks

Rksi5
 Rksi5
发布于 2014/11/21 02:59
字数 331
阅读 629
收藏 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
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
集群管理器--Apache Mesos

Apache Mesos是一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、MPI、Hypertable、Spark。 特性: Fault-tolerant replicated master using ZooKeeper...

匿名
2012/01/08
15.3K
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
23分钟前
0
0
php require和include 相对路径一个有趣的坑

以前总是被教育,不要使用相对路径,这样性能比较差,但是相对路径的问题不仅仅是性能哦,看下面这里例子 这是项目结构 .├── main.php├── t│ ├── t1.php│ └── t2.php└─...

anoty
23分钟前
13
0
x64技术之SSDT_Hook

测试环境: 虚拟机: Windows 7 64bit 过PG工具 驱动加载工具 PCHunter64 系统自带的计算器和任务管理器等 实现思路: 实际思路与win32的思路一样.都是替换SSDT表里边的函数地址.不过微软被搞怕...

simpower
24分钟前
0
0
TreeMap源码分析,看了都说好

一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很...

Java小铺
34分钟前
0
0
协变、逆变

概念 假设 A、B表示类型 ≤ 表示继承关系 f<⋅>表示类型转换 若A ≤ B,则 A是B的子类,B是A的超类 协变、逆变 什么是型变?型变(type variance)允许对类型进行子类型转换。 为了下面讲解先...

obaniu
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部