35.0、springboot-简单异步任务初体验

35.0、springboot-简单异步任务初体验

异步任务一般用在哪些地方呢?

        我们知道网页中有些按钮一点击之后就会马上给与用户反应,而不是等程序运行完之后再给用户反应,这样可以提升用户的体验,这里就用到了多线程的技术。

        接下来我们来真实的体验一下多线程的效果

第一步:我们可以先创建一个AsynchronousService.java文件如下:

package com.hkl.service;

import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
public class AsynchronousService {

//    @Async
    public void Asyn() {

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

        可以看到Asyn()方法里用到了Thread.sleep(3000)线程的休眠3000表示休眠3秒,

这时候如果我们调用这个方法那么就会卡3秒钟然后输出"数据正在处理中......"这段话。

        但是在前端我们看到的就是网页在转圈3秒后才会给与相对应的反应,

要知道在前端等待3秒钟,是一件非常可怕的事情,这样会给与用户带来极为不好的体验

第二步:我们可以测试一下效果,先创建一个AsynController.java文件:

package com.hkl.controller;

import com.hkl.service.AsynchronousService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class AsynController {

    @Autowired
    private AsynchronousService asynchronousService;

    @ResponseBody
    @RequestMapping("/Async")
    public String Async() {
        asynchronousService.Asyn();
        return "OK";
    }
}

第三步:访问 localhost:8080/Async

        访问后确实可以看到,网页在转圈加载,3秒后后台输出 "数据正在处理中......"这段话,并且前端同时给与反应返回OK字符串

        那我们要怎么解决这个问题呢,我们希望访问localhost:8080/Async 后网页能够及时立马给与回应,提升用户体验,然后不影响后台程序的运行,依旧是3秒后打印出"数据正在处理中......"这段话。

        我们只需要调用多线程来处理,即可完美解决!

        但是我们如果每次都要手动的去编写多线程来处理的话会非常麻烦,

        最简单的一种方法就是依靠spring帮我们的,只需要在AsynchronousService.java中的Asyn()方法加上@Async注解【这个注解会告诉spring,这是一个异步的方法】

        然后记得在springboot启动类上用以下注释开启多线程功能:

@EnableAsync

        OK,我们这时候再次启动springboot启动类,

        然后访问localhost:8080/Async 会发现访问后,前端立马给出了反应返回字符号串OK,而后台并没有直接输出"数据正在处理中......",而是3秒后成功打印了这段话。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值