异步任务|学习笔记

简介: 快速学习异步任务

开发者学堂课程【SpringBoot 快速掌握 - 高级应用:课时名称】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/613/detail/9309


异步任务

定时任务的创建

创建一个工程,

groups:comatguigu,Artifact:springboot-04-task

Package: com.atguigu.task,点击 next。

选择1,5.12版本,先只选择 web 模块,点击 next,完成创建。

先来测试 eb 任务,

创建一个 src,点击  task,new,java class,

Creat new class

Name:service.asyncservice,点击 OK 创建完成。

Eb 任务还是非常常见的,例如发送邮件,处理数据时,不想让他阻塞下面的线程,就可以用多线程的形式进行一些 eb 处理。

package com.atguigu.task.service;

import org.springframework.stereotype.Service;

@Service

public class AsyncService {

public void hello(){

try{

Thread.sLeep( millis: 3000) ;

}catch (InterruptedException e) {

e.printstackTrace();

}

System.out.println("处理数据中...");

}

}

调用这个方法需要漫长的等待点击 task,new,java class, Creat new class

Name:controller.asynccontroller

package com.atguigu.task.controller;

import com.atguigu.task.service.AsyncService;

importorg.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;

importorg.springframework.web.bind.annotation.RestController;

@RestController

public class AsyncController i

@Autowired

AsyncService asyncService;

@GetMapping( " / he1lo")

public String hello(){

asyncService.hello();

return "success";l

运行,

假如不希望用户在三秒以后得到响应,可以写成多线程的方式让他运行,但每次编写过于麻烦,所以可以在上述方法中加一个注解。

@Async

mportorg.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;

importorg.springframework.web.bind.annotation.RestController;

@RestController

@Async//告诉spring这是一个异步方法

public class AsyncController i

@Autowired

AsyncService asyncService;

@GetMapping( " / he1lo")

public String hello(){

asyncService.hello();

return "success";l

同时需要:

package com.atguigu.task;

import ...

EnableAsync 1/开启异步注解功能

SpringBootApplication

public class Springboot84TaskApplication {

publicstaticvoidmain(String[] args){ SpringApplication.run(Springboot04TaskApplication.

}

此时立即响应,并且不需要等待三秒。

相关文章
|
4月前
|
Java
异步技巧之CompletableFuture
异步技巧之CompletableFuture
61 2
|
1天前
|
数据采集 JavaScript Java
CompletableFuture异步编排,你还不会?
本文介绍了同步与异步编程的概念,探讨了在复杂业务场景中使用异步编排的重要性。通过对比 `Future` 与 `CompletableFuture`,详细讲解了 `CompletableFuture` 的多种方法,如 `runAsync`、`supplyAsync`、`whenComplete`、`exceptionally` 等,并展示了如何通过 `CompletableFuture` 实现异步任务的组合与异常处理。最后,通过实战案例演示了如何利用线程池与 `CompletableFuture` 优化商品详情页的查询效率,显著减少响应时间。
CompletableFuture异步编排,你还不会?
|
19天前
|
Java 数据库
异步&线程池 CompletableFuture 异步编排 实战应用 【终结篇】
这篇文章通过一个电商商品详情页的实战案例,展示了如何使用`CompletableFuture`进行异步编排,以解决在不同数据库表中查询商品信息的问题,并提供了详细的代码实现和遇到问题(如图片未显示)的解决方案。
异步&线程池 CompletableFuture 异步编排 实战应用 【终结篇】
|
19天前
|
Java
异步&线程池 CompletableFuture 异步编排 【下篇】
这篇文章深入探讨了Java中的`CompletableFuture`类,解释了如何创建异步操作、使用计算完成时的回调方法、异常处理、串行化方法、任务组合以及多任务组合的使用方式,并通过代码示例展示了各种场景下的应用。
异步&线程池 CompletableFuture 异步编排 【下篇】
|
4月前
|
Java
使用线程池异步执行
使用线程池异步执行
25 0
|
11月前
|
Java 数据库 数据安全/隐私保护
【CompletableFuture事件驱动异步回调】
【CompletableFuture事件驱动异步回调】
|
Java BI Spring
定时任务和异步任务
定时任务和异步任务
|
设计模式 JavaScript 前端开发
CompletableFuture 异步编排
CompletableFuture 异步编排
|
Java C++
c++基于ThreadPool实现灵活的异步任务
c++基于ThreadPool实现灵活的异步任务
|
Java API
CompletableFuture实现异步编排
场景:电商系统中获取一个完整的商品信息可能分为以下几步:①获取商品基本信息 ②获取商品图片信息 ③获取商品促销活动信息 ④获取商品各种类的基本信息 等操作,如果使用串行方式去执行这些操作,假设每个操作执行1s,那么用户看到完整的商品详情就需要4s的时间,如果使用并行方式执行这些操作,可能只需要1s就可以完成。所以这就是异步执行的好处。
149 0
CompletableFuture实现异步编排