`
拓子轩
  • 浏览: 211810 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring的定时任务和异步方法

    博客分类:
  • java
阅读更多

一、使用示例

1. 创建java工程,引入spring相关的jar包(略)

2. 在spring配置文件中加入如下配置:

    <task:annotation-driven/>

    <context:component-scan base-package="com.tuozixuan.task"/>

 3. 编写如下示例代码并运行

 

package com.tuozixuan.task;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component("myTask")
public class MyTask
{
    @Scheduled(cron="0 0/5 10-12 * * ?")
    public void execute()
    {
        String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        System.out.println("[" + date + "]execute task...");
    }
    
    public static void main(String[] args)
    {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring.xml"});
    }
}

 

 

二、spring定时任务详解

1. @Scheduled配置

    @Scheduled(fixedRate=1000),fixedRate表明这个方法需要每隔指定的毫秒数进行周期性地调用。

    @Scheduled(fixedDelay=2000),fixedDelay用来指定方法调用之间的间隔(一次调用完成与下一次调用开始之间的间隔)。

    @Scheduled(cron="0 0/5 10-12 * * ?") cron用来指定这个方法在什么时间调用。

 

    cron设置:

    1)秒(0-59)

    2)分钟(0-59)

    3)小时(0-23)

    4)月份中的日期(0-31)

    5)月份(1-12或JAN-DEC)

    6)星期中的日期(1-7或SUN-SAT)

    7)年份(1970-2099)

    每个元素都可以显式地指定值(如3)、范围(2-5)、列表(2,4,7)或者通配符(如*)。

    月份汇总的日期和星期中的日期是互斥的,可以通过设置一个问号(?)来表明你不想设置的那个字段

    

三、异步方法

 1. 在Bean的方法上使用@Async进行注解,就可以使该方法成为一个异步执行的方法,代码示例如下:

 

package com.tuozixuan.task;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component("myTask")
public class MyTask
{
    
    @Async
    public void executeAsync()
    {
        System.out.println("async execute task start...");
        try
        {
            Thread.sleep(5000);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        System.out.println("async execute task end...");
    }
    
    public static void main(String[] args)
    {

        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring.xml"});
        
        MyTask myTask =  context.getBean("myTask", MyTask.class);
        myTask.executeAsync();
        System.out.println("main...");
    }
}

 

分享到:
评论

相关推荐

    spring定时任务关键jar包(齐全)

    首先,Spring定时任务主要依赖于`spring-context-support`模块,这个模块包含了处理定时任务所需的类和接口。在压缩包`lib`中,应该包含了这个jar包。`spring-context-support.jar`是Spring框架对Quartz和Commons ...

    Spring定时任务实现(非Web项目)

    在非Web项目中实现Spring定时任务,主要步骤如下: 1. **配置Spring Task**:在Spring的配置文件(如`applicationContext.xml`或使用Java配置类)中,我们需要启用任务调度功能并配置相应的执行器或调度器。例如,...

    Spring定时任务

    Spring定时任务基于`@Scheduled`注解和`TaskScheduler`接口实现。`@Scheduled`用于标注需要定时执行的方法,而`TaskScheduler`则提供了更灵活的定时任务调度方式。 2. **启用定时任务** 要使用Spring定时任务,...

    Spring 定时任务源码(spring 三种定时任务的实现方式)

    在Spring框架中,定时任务是实现系统自动化运行关键任务的重要工具。Spring提供了多种方式来创建和管理定时任务,...在chapter13目录下的文件可能包含了这些源码示例,你可以逐一研究,加深对Spring定时任务的理解。

    Java多线程之定时任务 以及 SpringBoot多线程实现定时任务——异步任务

    1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled

    SpringBoot实现定时任务和异步调用

    SpringBoot实现定时任务和异步调用 SpringBoot框架提供了强大的功能来实现定时任务和异步调用,这在业务场景中非常常见。例如,在电商平台中,需要定时发送邮件、短信、统计监控数据等操作,而在订单流程中,需要...

    Spring定时任务@Scheduled例子

    在Spring框架中,定时任务是实现自动化...以上就是关于Spring定时任务`@Scheduled`的例子,包括其工作原理、配置以及在实际项目中的应用。理解并熟练运用这些知识,能够帮助我们构建更加高效、自动化的Spring应用程序。

    spring自带定时任务程序

    给定的压缩包可能包含了一个关于如何配置、使用和测试Spring定时任务的文档。这个文档应该详细介绍了每个步骤,包括如何在Spring环境中注册和启动定时任务,如何编写带有`@Scheduled`注解的方法,以及如何编写测试...

    Spring3.0定时任务简单实例web工程

    Spring提供了`TaskExecutor`接口和`TaskScheduler`接口来处理异步任务和定时任务。在这个项目中,我们更可能使用`TaskScheduler`,因为它可以灵活地设置定时任务的执行计划。 要启用定时任务,我们需要在Spring配置...

    springboot 定时任务(线程配置,并行【同步】、异步等)

    本教程将深入探讨如何配置并实现Spring Boot中的定时任务,包括线程配置、并行同步和异步执行等关键概念。 首先,我们需要了解Spring Boot中的定时任务基础。通过添加`@EnableScheduling`注解到某个配置类,我们...

    定时任务spring3.0

    Spring的定时任务可以通过两种方式实现:基于注解和基于XML配置。 1. **基于注解的定时任务**: 使用`@Scheduled`注解可以在类或方法级别声明定时任务。例如: ```java @Component @EnableScheduling public ...

    Spring3.2.6定时任务+线程池.docx

    本文详细介绍了如何在Spring3.2.6中配置线程池和定时任务,包括XML配置文件的具体设置以及程序类的实现。通过这种方式,可以有效地管理后台任务的执行,提高系统的并发处理能力。这种配置方式不仅适用于Spring3.2.6...

    Spring定时任务的多种使用方法总结

    首先,Spring提供了一个名为`TaskExecution`和`TaskScheduling`的模块,它允许我们方便地执行异步任务和定时任务。以下是一些主要的定时任务实现方法: 1. **基于`java.util.Timer`和`TimerTask`** 这是Java标准库...

    spring中邮件及定时任务

    在Spring框架中,邮件服务和定时任务是两个非常重要的功能扩展。邮件服务允许开发者向用户发送电子邮件,而定时任务则可以实现程序的自动化执行,如数据同步、报表生成等。以下将详细介绍这两个方面。 首先,我们来...

    Spring的定时任务开发及对Quartz和Timer支持

    首先,Spring提供了自己的`TaskExecution`和`TaskScheduling`模块,用于执行异步任务和定时任务。`TaskExecutor`接口用于异步执行任务,而`TaskScheduler`接口则用于调度定时任务。通过实现这些接口或使用其默认实现...

    基于Spring打造简单高效通用的异步任务处理系统

    如果需要更强大的调度功能,Spring还提供了集成Quartz调度框架的选项,Quartz允许更复杂的定时规则和任务管理。 Spring封装的线程池则是提高任务执行效率的关键。通过使用Spring内置的基于JDK线程池的实现,我们...

    定时、异步

    在Spring框架中,定时任务和异步处理是两种非常重要的功能,它们可以帮助开发者实现复杂的后台任务调度和提高程序的执行效率。Spring 3.0引入了`@Scheduled`注解来支持定时任务,并通过`@Async`注解实现了异步方法的...

    spring定时任务

    在"spring-schema-task3.2.1"和"spring-schema-task3.1.0"这两个文件中,包含了Spring Task的相关配置和依赖,你可以通过XML配置或者Java配置来定义定时任务。例如,你可以定义一个`TaskExecutor`来执行异步任务,...

    Spring定时调度简单实现源码

    这个"Spring定时调度简单实现源码"很显然是一个关于如何在Spring中配置和使用定时任务的示例代码包。下面我们将深入探讨Spring的定时调度机制以及其核心组件。 Spring的定时任务调度主要依赖于两个关键组件:`Task...

Global site tag (gtag.js) - Google Analytics