摘要:序本文主要简述下如何设置的。实例使用托管的好处就是可以在容器启动或销毁的时候做些准备或清理动作。分别可以用及来指定。默认寻找的命名为或者的无参方法,这里没有配置,默认调用的是的方法。
序
本文主要简述下如何设置TaskExecutor的Thread.UncaughtExceptionHandler。
实例@Bean protected ThreadPoolTaskScheduler taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10); executor.setMaxPoolSize(50); executor.setQueueCapacity(100); executor.setThreadNamePrefix("demo-"); executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); executor.setWaitForTasksToCompleteOnShutdown(true); executor.initialize(); return executor; }
配置Thread.UncaughtExceptionHandler使用spring托管TaskExecutor的好处就是可以在spring容器启动或销毁的时候做些准备或清理动作。分别可以用initMethod及destroyMethod来指定。
destroyMethod默认寻找public的命名为close或者shutdown的无参方法,这里没有配置,默认调用的是ThreadPoolTaskScheduler的shutdown方法。
spring默认会给async的线程池配SimpleAsyncUncaughtExceptionHandler,具体见spring-context-4.3.9.RELEASE-sources.jar!/org/springframework/scheduling/annotation/AsyncAnnotationAdvisor.java
不过自己配置的taskExecutor就没有这个福利了,需要自己配置,如下:
final Thread.UncaughtExceptionHandler uncaughtExceptionHandler = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { //do what you want } }; ThreadFactoryBuilder threadFactoryBuilder = new ThreadFactoryBuilder(); threadFactoryBuilder.setNameFormat("demo-%d"); threadFactoryBuilder.setUncaughtExceptionHandler(uncaughtExceptionHandler); executor.setThreadFactory(threadFactoryBuilder.build());
这样就大功告成了
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67917.html
摘要:序本文主要聊聊中的注解。这里从获取注解有个可以标注使用哪个,这里的就是寻找这个标识。推荐注解指定,然后的返回,让它去寻找默认的自己应用里头都默认定义一个给托管 序 本文主要聊聊spring中的async注解。 AsyncConfigurer @EnableAsync(proxyTargetClass = true) @Configuration public class AsyncCo...
摘要:注意这时中结果为,即将原来的替换成,所以直接返回线程池执行的结果。提醒中的是你业务代码执行的步骤。所以异步异常处理和同步相同,在这段请求中处理。比多,调用时间即发起之前。正是请求被异步化,从而使得能,即。 用法 @GetMapping(/ddd) public Callable process() { return () -> { Thread.sleep(...
摘要:下面我们稍稍改下代码来证实一下这次我让任务执行的时间等于,大于条线程总间隔时间来耗尽线程池中的线程。 1.开篇 在Spring定时任务@Scheduled注解使用方式浅窥这篇文章里面提及过,spring的定时任务默认是单线程的,他在某些场景下会造成堵塞,那么如果我们想让每一个任务都起一条线程去执行呢? 2.使用@Async 我们可以使用Spring的@Async注解十分容易的实现多线程...
摘要:第三个就是比较重点的内容,在有赞的实践。第四部分是将实时计算化,界面化的一些实践。二有赞实时平台架构有赞的实时平台架构呢有几个主要的组成部分。实时平台提供了集群管理,项目管理,任务管理和报警监控的功能。。 一、前言 这篇主要由五个部分来组成: 首先是有赞的实时平台架构。 其次是在调研阶段我们为什么选择了 Flink。在这个部分,主要是 Flink 与 Spark 的 structure...
摘要:第三个就是比较重点的内容,在有赞的实践。第四部分是将实时计算化,界面化的一些实践。二有赞实时平台架构有赞的实时平台架构呢有几个主要的组成部分。实时平台提供了集群管理,项目管理,任务管理和报警监控的功能。。 一、前言 这篇主要由五个部分来组成: 首先是有赞的实时平台架构。 其次是在调研阶段我们为什么选择了 Flink。在这个部分,主要是 Flink 与 Spark 的 structure...
阅读 2255·2021-11-25 09:43
阅读 3122·2021-10-14 09:42
阅读 3484·2021-10-12 10:12
阅读 1526·2021-09-07 10:17
阅读 1900·2019-08-30 15:54
阅读 3181·2019-08-30 15:54
阅读 1550·2019-08-30 15:53
阅读 1907·2019-08-29 11:21