IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot-异步@Async -> 正文阅读

[Java知识库]SpringBoot-异步@Async

目录

一、异步与同步介绍

二、SpringBoot实现异步


【一心同学】正在参加【博客之星】

希望各位大佬能够投【五星】? ? ? ? ?给予【一心同学】,每一份投票都是【一心同学】的动力。

【一心同学】投票专区入口:https://bbs.csdn.net/topics/603956556?

想要学到更多后端知识,欢迎关注【一心同学】

??????感谢各位大可爱小可爱!???????


一、异步与同步介绍

异步(async)是相对于同步(sync)来说的,简单理解,同步是串行的,异步是并行的。

好比说,A需要从B和C两个节点获取数据

第一种方式,A请求B,B返回给A数据,A再去请求C,在从C出获得数据。这种方式就是同步。

另一种方式,A去请求B,不等B返回数据,就去请求C,然后等B和C准备好数据再推送给A,A同样可以拿到B和C的数据,这就是异步。

注意:第二种方式B和C是同时处理A的请求的,是比第一种方式效率要高的,但是这种方式,有一个限制,就是从B和C之间要获取的数据不能有依赖关系,假如获取C的数据时候,C需要从B返回来的数据,那就只能采用第一种方式,先请求B,拿到B的数据,在去请求C。
?

分析:

异步和同步是两种处理方式,同步适用的场景多,编码简单,便于理解,但是在某些特定的场景下异步比同步效率会高出很多。

二、SpringBoot实现异步

一心同学的目录:

?

(1)创建一个service包

(2)创建一个类AsyncService

(3)编写方法,表示处理数据,利用线程设置延迟

package com.yixin.demo.service;

import org.springframework.stereotype.Service;

@Service
public class AsyncService {

 public void work(){

 System.out.println("一心同学正在处理数据");
 try {
 Thread.sleep(3000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }

 System.out.println("数据处理完毕");
 }
}

(4)创建controller包并编写Controller类

@RestController
public class MyController {

 @Autowired
 AsyncService asyncService;

 @RequestMapping("/get")
 public String get(){
 asyncService.work();
 return "success";
 }
}

(5)访问http://localhost:8080/get进行测试,3秒后出现success,这是同步等待的情况。

(6)给work方法添加@Async注解

@Service
public class AsyncService {

 //告诉Spring这是一个异步方法
 @Async
 public void work(){
 System.out.println("一心同学正在处理数据");
 try {
 Thread.sleep(3000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("数据处理完毕");
 }
}

SpringBoot就会自己开一个线程池,进行调用!

注意:要让这个注解生效,我们还需要在主程序上添加一个注解@EnableAsync ,开启异步注解功能;

主程序类:

@EnableAsync //开启异步注解功能
@SpringBootApplication
public class DemoApplication {

 public static void main(String[] args) {
 SpringApplication.run(DemoApplication.class, args);
 }
}

(7)重启测试,会发现网页立即响应,输出“success"!

从这个案例可以看出,异常操作可以大大的提高我们的工作效率!


?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:44:53  更:2022-01-01 13:47:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:53:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码