定时任务
@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)); } }
相关推荐
在Spring Boot框架中,`springboot-scheduler`是用于实现定时任务的重要组件,它基于Spring的Task Execution和Scheduling模块,使得在应用中添加和管理定时任务变得简单易行。这个"springboot-scheduler定时任务学习...
在本项目中,"SpringBoot-OneNet.zip" 文件是一个整合了SpringBoot框架和IoT(物联网)技术的应用,主要用于与OneNet云平台交互。以下是该项目的关键知识点和详细说明: 1. **SpringBoot**: SpringBoot是Spring...
SpringBoot - Async异步处理
SpringBoot整合Elasticsearch是现代Java开发中常见的一项任务,因为SpringBoot的便捷性和Elasticsearch的高效搜索能力,使得这种结合在数据检索、分析和日志存储等领域广泛应用。本项目"springboot-elasticsearch-...
1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled
3. 消息队列:SpringBoot可以轻松集成RabbitMQ或Kafka,实现消息的生产与消费,提升系统的异步处理能力。 4. 缓存管理:集成Redis或Memcached,提供高速的缓存服务,提高系统性能。 5. 安全控制:Spring Security...
本视频《SpringBoot高级》属于下部,着重介绍SpringBoot的与各大场景的整合使用,内容包括:缓存(整合Redis),消息中间件(整合RabbitMQ),检索(整合ElasticSearch),任务(异步任务,定时任务,邮件任务),...
7. **异常处理**:在处理文件上传和读取过程中,可能会遇到文件格式不正确、文件过大、网络中断等问题,需要适当地进行异常处理,提供友好的错误提示。 这个项目对于学习Spring Boot和LayUI的集成,以及如何处理...
综上所述,`request-springboot-starter`通过整合和优化上述功能,为Spring Boot开发者提供了更强大、更易用的工具集,提升了开发效率并优化了系统的整体性能。在实际项目中,我们可以根据需求导入这个库,从而更好...
Spring Task提供了一种便捷的方式来定义和管理定时任务,尤其在Spring Boot环境中,通过`@EnableScheduling`和`@Scheduled`注解可以轻松地启用和配置定时任务。本文将深入探讨Spring Task的执行原理以及遇到的一些...
1. **开启异步支持**:首先,你需要在SpringBoot的主启动类上添加`@EnableAsync`注解,这样Spring会自动配置一个AsyncConfigurer,用来处理异步任务。 ```java @SpringBootApplication @EnableAsync public class ...
通过这个示例项目,开发者可以学习到如何在Spring Boot应用中整合Netty,利用Netty的强大性能处理TCP通信,这对于构建高效、实时的后端服务非常有帮助。同时,这也涉及到Java的并发编程和网络编程知识,对提升开发者...
在本项目"springboot-dubbo整合框架2"中,我们主要关注的是如何将流行的Java微服务框架Spring Boot与阿里巴巴的高性能远程服务调用框架Dubbo相结合,构建一个强大的分布式服务系统。Spring Boot以其简洁的配置和快速...
springboot-websocket整合项目开箱即用,ws服务端,包含了在线客户监听,发送指定客户端数据,发送所有客户端数据。还可以根据指定转发给某个客户端。 WebSocketConfig配置缓存大小设置,设置异步发送操作的超时时间...
Spring Boot提供了对Spring Task的集成,使得在Spring Boot应用中配置和管理定时任务变得简单。本文将深入探讨Spring Boot中的定时任务原理,以及如何解决可能出现的问题。 首先,Spring Boot使用`@...
SpringBoot与Quartz结合使用,可以构建强大的定时任务执行系统,尤其在企业级应用中,对于数据处理、定期报告、清理任务等需求有着广泛的应用。本文将深入探讨SpringBoot集成Quartz的相关知识点,并结合前端技术如...
SpringBoot实现定时任务和异步调用 SpringBoot框架提供了强大的功能来实现定时任务和异步调用,这在业务场景中非常常见。例如,在电商平台中,需要定时发送邮件、短信、统计监控数据等操作,而在订单流程中,需要...
6. **Ajax**:异步JavaScript和XML技术,实现在不重新加载整个网页的情况下更新部分网页内容,提高了用户体验。 #### 四、系统设计与实现 1. **系统架构设计**:采用MVC架构,清晰地划分出模型、视图和控制器三个...
3. **消息处理**:WebSocket Handler中的`handleTextMessage`方法是接收和处理消息的核心。这里可以实现消息的转发、存储、广播等功能,以满足聊天室的多用户交互需求。 4. **Stomp协议**:Spring Boot与WebSocket...