`

SpringBoot-第十章 SpringBoot整合定时任务和异步任务处理

 
阅读更多

定时任务

@Component
public class TestTask {

    //@Scheduled(fixedRate = 2000)//两秒执行一次(从上一次开始计算2秒后)
    //@Scheduled(fixedDelay = 2000)//每次执行间隔两秒
    //@Scheduled(cron="*/2 * * * * *")//每次执行间隔两秒
    @Scheduled(fixedDelayString = "2000")//每次执行间隔两秒,这个参数可以同配置文件配置
    public void sum() throws Exception
    {
        Thread.sleep(4000);
        System.out.println("当前时间:"+new Date());
    }
}

 

异步任务

@Component
@Async
public class AsyncTask {

    public void task1() throws InterruptedException {
        Long start = System.currentTimeMillis();
        Thread.sleep(1000);
        Long end = System.currentTimeMillis();
        System.out.println("任务1耗时:"+(end-start));
    }
    public void task2() throws InterruptedException {
        Long start = System.currentTimeMillis();
        Thread.sleep(2000);
        Long end = System.currentTimeMillis();
        System.out.println("任务2耗时:"+(end-start));
    }
    public void task3() throws InterruptedException {
        Long start = System.currentTimeMillis();
        Thread.sleep(3000);
        Long end = System.currentTimeMillis();
        System.out.println("任务3耗时:" + (end - start));
    }
    public Future<String> task4() throws InterruptedException {
        Long start = System.currentTimeMillis();
        Thread.sleep(1000);
        Long end = System.currentTimeMillis();
        System.out.println("任务4耗时:"+(end-start));
        return new AsyncResult<String>("任务4结束");
    }
    public Future<String> task5() throws InterruptedException {
        Long start = System.currentTimeMillis();
        Thread.sleep(2000);
        Long end = System.currentTimeMillis();
        System.out.println("任务5耗时:"+(end-start));
        return new AsyncResult<String>("任务5结束");
    }
    public Future<String> task6() throws InterruptedException {
        Long start = System.currentTimeMillis();
        Thread.sleep(3000);
        Long end = System.currentTimeMillis();
        System.out.println("任务6耗时:"+(end-start));
        return new AsyncResult<String>("任务6结束");
    }

}

调用异步任务:

@RestController
@RequestMapping("/api/v1/task")
public class MyTaskController {

    @Autowired
AsyncTask aTask;
    @RequestMapping("/async")
    public void doTask() throws InterruptedException {
        long start = System.currentTimeMillis();
        aTask.task1();
        aTask.task2();
        aTask.task3();
        Future<String> t4 = aTask.task4();
        Future<String> t5 = aTask.task5();
        Future<String> t6 = aTask.task6();
        for(;;)
        {
//            if(aTask.task4().isDone()&&aTask.task5().isDone()&&aTask.task6().isDone())
if(t4.isDone()&&t5.isDone()&&t6.isDone())
            {
                break;
            }
        }
        Thread.sleep(1000);
        long end = System.currentTimeMillis();
        System.out.print("请求耗时:"+(end-start));

    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    springboot-scheduler定时任务学习demo源码

    在Spring Boot框架中,`springboot-scheduler`是用于实现定时任务的重要组件,它基于Spring的Task Execution和Scheduling模块,使得在应用中添加和管理定时任务变得简单易行。这个"springboot-scheduler定时任务学习...

    SpringBoot-OneNet.zip

    在本项目中,"SpringBoot-OneNet.zip" 文件是一个整合了SpringBoot框架和IoT(物联网)技术的应用,主要用于与OneNet云平台交互。以下是该项目的关键知识点和详细说明: 1. **SpringBoot**: SpringBoot是Spring...

    SpringBoot - Async异步处理

    SpringBoot - Async异步处理

    springboot整合es-springboot-elasticsearch.zip

    SpringBoot整合Elasticsearch是现代Java开发中常见的一项任务,因为SpringBoot的便捷性和Elasticsearch的高效搜索能力,使得这种结合在数据检索、分析和日志存储等领域广泛应用。本项目"springboot-elasticsearch-...

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

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

    springboot-integration-examples,springboot与其他常用技术的集成.zip

    3. 消息队列:SpringBoot可以轻松集成RabbitMQ或Kafka,实现消息的生产与消费,提升系统的异步处理能力。 4. 缓存管理:集成Redis或Memcached,提供高速的缓存服务,提高系统性能。 5. 安全控制:Spring Security...

    128元尚硅谷Java视频教程_Spring Boot视频教程(下)整合篇

    本视频《SpringBoot高级》属于下部,着重介绍SpringBoot的与各大场景的整合使用,内容包括:缓存(整合Redis),消息中间件(整合RabbitMQ),检索(整合ElasticSearch),任务(异步任务,定时任务,邮件任务),...

    springboot-layui.rar

    7. **异常处理**:在处理文件上传和读取过程中,可能会遇到文件格式不正确、文件过大、网络中断等问题,需要适当地进行异常处理,提供友好的错误提示。 这个项目对于学习Spring Boot和LayUI的集成,以及如何处理...

    Spring框架-SpringBoot-定时任务-深入教程.pdf

    Spring Task提供了一种便捷的方式来定义和管理定时任务,尤其在Spring Boot环境中,通过`@EnableScheduling`和`@Scheduled`注解可以轻松地启用和配置定时任务。本文将深入探讨Spring Task的执行原理以及遇到的一些...

    【java框架】SpringBoot(4)--SpringBoot实现异步、邮件、定时任务(csdn)————程序.pdf

    1. **开启异步支持**:首先,你需要在SpringBoot的主启动类上添加`@EnableAsync`注解,这样Spring会自动配置一个AsyncConfigurer,用来处理异步任务。 ```java @SpringBootApplication @EnableAsync public class ...

    Springboot-Netty-Tcp-demo.zip

    通过这个示例项目,开发者可以学习到如何在Spring Boot应用中整合Netty,利用Netty的强大性能处理TCP通信,这对于构建高效、实时的后端服务非常有帮助。同时,这也涉及到Java的并发编程和网络编程知识,对提升开发者...

    springboot-dubbo整合框架2

    在本项目"springboot-dubbo整合框架2"中,我们主要关注的是如何将流行的Java微服务框架Spring Boot与阿里巴巴的高性能远程服务调用框架Dubbo相结合,构建一个强大的分布式服务系统。Spring Boot以其简洁的配置和快速...

    springboot-websocket整合项目开箱即用

    springboot-websocket整合项目开箱即用,ws服务端,包含了在线客户监听,发送指定客户端数据,发送所有客户端数据。还可以根据指定转发给某个客户端。 WebSocketConfig配置缓存大小设置,设置异步发送操作的超时时间...

    Spring框架-SpringBoot-定时任务-深入教程.docx

    Spring Boot提供了对Spring Task的集成,使得在Spring Boot应用中配置和管理定时任务变得简单。本文将深入探讨Spring Boot中的定时任务原理,以及如何解决可能出现的问题。 首先,Spring Boot使用`@...

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

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

    基于springboot-vue的毕业论文管理系统论文-java-文档-基于springboot-vue的毕业论文管理系统-文档

    6. **Ajax**:异步JavaScript和XML技术,实现在不重新加载整个网页的情况下更新部分网页内容,提高了用户体验。 #### 四、系统设计与实现 1. **系统架构设计**:采用MVC架构,清晰地划分出模型、视图和控制器三个...

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

    在Spring Boot应用中,定时任务是一项非常重要的功能,它允许我们按照预定的时间间隔执行特定的任务。Spring Boot集成了Spring Framework的...这使得在Spring Boot应用中处理定时任务和多线程问题变得更加简单高效。

    springboot-elasticsearch

    3. 异步处理:SpringBoot与Elasticsearch结合可以利用Spring的异步机制,实现非阻塞的数据操作,提高系统性能。 4. 集群管理:在分布式环境中,SpringBoot可以帮助管理Elasticsearch集群,包括节点发现、负载均衡等...

    springboot-rabbitmq实例.rar

    总结来说,Spring Boot与RabbitMQ的整合提供了强大的消息传递功能,允许应用以异步方式处理任务,提高了系统的可扩展性和解耦性。通过创建生产者和消费者,我们可以构建一个简单但功能齐全的示例,实现消息的发送和...

Global site tag (gtag.js) - Google Analytics