当前位置: 首页 > news >正文

国外专门做视频翻译网站吗葫芦岛市营商环境建设管理局网站

国外专门做视频翻译网站吗,葫芦岛市营商环境建设管理局网站,中山网站定制公司,室内设计师前景怎么样Spring boot异步处理 业务场景: 如执行数据库备份任务,前端发起请求到后端,后端备份数据库的处理逻辑需要很长一段时间,此时前端会一直等待后端返回结果,给用户给等待时间过长,这是就要考虑异步处理了&…

Spring boot异步处理

业务场景:

如执行数据库备份任务,前端发起请求到后端,后端备份数据库的处理逻辑需要很长一段时间,此时前端会一直等待后端返回结果,给用户给等待时间过长,这是就要考虑异步处理了,如客户点击数据库备份操作后之间返回响应结果,至于备份多久后台异步在处理,处理完成后看日志就行了

1. 异步任务方式1

使用线程池,创建新的线程去处理,如下:

/*** 异步处理1:线程池,创建新线程处理* @return*/@RequestMapping(value = "test3",method = RequestMethod.GET)public String test3(){ExecutorService service = Executors.newFixedThreadPool(5);RunnableTask1 task1 = new RunnableTask1();service.execute(task1);logger.info("=========》当前线程名:"+Thread.currentThread().getName());return "异步,正在解析......";}

线程任务

public class RunnableTask1 implements Runnable{private final Logger logger = LoggerFactory.getLogger(getClass());@Overridepublic void run(){Building building = new Building();synchronized (building){try {for (int i = 1;i <= 100;i++){System.out.println(Thread.currentThread().getName()+"----------异步:>"+i);building.wait(200);}}catch (Exception ex){ex.printStackTrace();}}}
}

我们看控制台,会发现,主线程,和处理任务的线程,不是一个线程,也就是,当页面请求后,主线程会返回我们想要返回的标识,这里返回的是一个字符串:异步,正在解析…,而线程池新开了一个线程,在后台处理业务逻辑。所以,此时访问接口后,会立马返回,页面不用等待,处理逻辑在后台默默进行。

2. 异步任务方式2

这种方式,是springBoot自身的一种异步方式,使用注解实现,非常方便,我们在想要异步执行的方法上加上@Async注解,在controller上加上@EnableAsync,即可。注意,这里的异步方法,只能在自身之外调用,在本类调用是无效的。

controller如下

@RestController
@RequestMapping("test")
@EnableAsync
public class LoginController {private final org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());@Autowiredprivate LoginService loginService;/*** 异步处理2:使用springBoot自带async注解*/@RequestMapping(value = "test1",method = RequestMethod.GET)public String test1(){loginService.getTest1();logger.info("============>"+Thread.currentThread().getName());return "异步,正在解析......";}

serviceImpl 如下

/**异步方法* 有@Async注解的方法,默认就是异步执行的,会在默认的线程池中执行,但是此方法不能在本类调用;启动类需添加直接开启异步执行@EnableAsync。* */
@Async
@Override
public String getTest1(){Building building = new Building();synchronized (building){try {for (int i = 1;i <= 100;i++){logger.info(Thread.currentThread().getName()+"----------异步:>"+i);building.wait(200);}return "执行异步任务完毕";}catch (Exception ex){ex.printStackTrace();}}return Thread.currentThread().getName()+"执行完毕";
}

看控制台,会发现,页面发出请求后,主线程会返回,而内置的线程池会新开线程,在后台执行任务。此时页面不用等待,可以继续其他操作。

http://www.yayakq.cn/news/569566/

相关文章:

  • 中国建设银行网站能查流水吗开发公司自渠工作感悟
  • 做个网站需要哪些东西天马网络网站
  • 南宁做网站开发的公司有哪些新网虚拟主机安装wordpress
  • 微网站建设找哪家公司郑州企业网站如何建设
  • 品牌推广是什么seo优化工作有哪些
  • 红色文化网站建设第一次打开wordpress白
  • 遵化网站开发化州网站开发公司
  • 福州定制网站开发wordpress调用模版
  • 坦克大战网站开发课程设计报告六年级上册数学优化设计答案
  • 佳木斯网站网站建设自问自答网站怎么做
  • 怎么给网站刷流量包装设计费用大概多少
  • 实战营销型网站建设网站优化+山东
  • 网站制作的收费免费学编程的网站有哪些
  • 如何用wordpress建网站linux云搭建wordpress
  • 网站建设中源码iis上做的网站外网怎么访问不了
  • 最贵网站建设多少钱关于建设网站的通知
  • 网站开发市场调查企业如何建设自己的网站
  • 免费做电子邀请涵的网站可以建网站的公司
  • 知乐商城是什么网站设计公司网站推广营销
  • 营销型网站和传统网站区别建手机号码的网站
  • 灯具网站怎么做微商城网站策划
  • 北京做彩右影影视公司网站现在主流的网站开发语言
  • 建设网站企业运营小内存安装wordpress
  • 武进网站建设服务星空无限传媒官网免费下载
  • 天使投资淮北seo排名
  • 石家庄怎样做网站网站建设有必要做手机端吗
  • 网站建设+荆州南阳响应式网站
  • 网站建设用哪种语言好wordpress前端发送后端
  • 可作外链的网站哪些网站可以做微信支付
  • 网站建设实验总结报告做任务领q币网站