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

搭建公司网站多少钱商城网站服务器租用

搭建公司网站多少钱,商城网站服务器租用,电脑版网页登录入口,公众号登录不上在一些后台耗时的场景比如说生成统计报表,生成数据文件,执行批量任务时候,需要异步执行,先登记信息,然后异步执行批量同步返回给客户端。在spring中要想使用异步方法执行,必须使用EnableAsync注解开启async…

在一些后台耗时的场景比如说生成统计报表,生成数据文件,执行批量任务时候,需要异步执行,先登记信息,然后异步执行批量同步返回给客户端。在spring中要想使用异步方法执行,必须使用@EnableAsync注解开启async。

开启异步执行配置

@Configuration
@EnableAsync
@ComponentScan(basePackages = {"com.cpx.service.async"})
public class AsyncConfig {}

然后在需要异步执行的方法上添加@Async注解

@Service
public class AsyncService {@Asyncpublic void exec(){try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(LocalDateTime.now().toString() +":exec end");}
}

添加@Async注解的方法必须是public的。方法所属的类必须是一个bean才能被扫描到。this方式调用异步方法是没有效果的。因为使用的动态代理。

测试方法的异步执行:

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AsyncConfig.class);
AsyncService asyncService = (AsyncService) ctx.getBean("asyncService");
System.out.println(LocalDateTime.now().toString()+" start");
asyncService.exec();//该方法调用会异步执行
System.out.println(LocalDateTime.now().toString()+" main end");
ctx.close();

TaskExecutor

方法的异步执行是通过线程池来执行的, spring默认会从beanFactory中尝试去获取TaskExecutor类型的bean,如果获取不到,就会继续尝试获取bean name为’taskExecutor’的bean,还获取不到就创建一个SimpleAsyncTaskExecutor类型的执行器。SimpleAsyncTaskExecutor每来一个任务会启动一个Thread来执行任务,不会重复利用。这么看SimpleAsyncTaskExecutor不是一个严格意义的线程池,线程并不会重用。如果高并发耗时任务可能会导致一定的内存使用问题。这里可以指定线程池。

第一种通过实现AsyncConfigurer接口,然后重写getAsyncExecutor()方法。

public class AsyncConfig implements AsyncConfigurer {@Overridepublic Executor getAsyncExecutor() {//自定义线程池实现ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();threadPoolTaskExecutor.initialize();return threadPoolTaskExecutor;}
}

这种线程池是所有@Async注解都可以使用,另一种可以在@Async(“taskExecutor”)注解上指定线程池名字。

返回值

可以返回一个future。

@Async
public Future<String> exec(){try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}return new AsyncResult<String>("ok");
}

异常处理

有返回的@Async方法异常会被封装到future里,没有返回值的可以定义一个AsyncUncaughtExceptionHandler来处理异常

public class CustomAsyncExceptionHandler implements AsyncUncaughtExceptionHandler {@Overridepublic void handleUncaughtException(Throwable ex, Method method, Object... params) {System.out.println(method.getName()+",发生异常");//TODO}
}

然后在实现AsyncConfigurer的bean里重写getAsyncUncaughtExceptionHandler()返回自定义的异常handler。

异步执行的原理还是通过@EnableAsync引入对应的bean后置处理器,来使用advisor对@Async标识的方法进行代理增强。方法的执行会通过AsyncExecutionInterceptor代理执行。

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

相关文章:

  • 微网站和普通网站区别别墅装修排名
  • 深圳网站建设大全个体户做网站与公司好
  • 网站开发的朋友圈百度人工
  • 网站seo优化服务手机如何制作网站教程
  • 网站开发 前端 后端 如何结合alexa排名软件
  • 呼和浩特建设厅官方网站网站建设交流发言
  • 网站建设宣传文案提供手机自适应网站建设
  • 如何在旅游网站上做攻略广东省白云区属于哪个市
  • 做网站比较专业的公司企业网站怎么做的更好
  • 网站公共模板是什么网站建设中建站广告html单页面
  • 网站备案收费么工业设计专业作品集
  • 品质培训网站建设外贸php网站源码
  • 阿里云wordpress搭建网站wordpress 网银
  • 免费海报设计网站有哪些辽宁造价工程造价信息网
  • 企业怎么样上各大网站做宣传wordpress建的论坛
  • 服装网站建设优点和缺点seo综合查询使用vsping工具
  • 网站营销外包公司简介服装设计网站有哪些推荐
  • 企业网站推广方法和技巧目前比较流行的公司网站建站技术
  • 淘宝网站所用编码腾讯网站备案
  • 丰宁县建设局网站烟台网站建设专业臻动传媒
  • 如何看网站的流量推荐好用的浏览器
  • 网站建设属于行政那个模块和一起做网店差不多的网站
  • 做家教有什么网站个人网站 域名选择
  • 河南建设厅网站首页中小型企业建设一个网站大概需要多少钱
  • 十二冶金建设集团有限公司网站app开发公司部门
  • 厦门市建设局官方网站公司简介模板免费下载
  • 学校网站建设新闻网站内容
  • 网站制作需要的材料微信公众号网站制作
  • 长沙门户网站开发迅睿cms和帝国哪个好
  • 软件园做网站长沙网站推广公司排名