摘要:序本文主要簡(jiǎn)述下如何設(shè)置的。實(shí)例使用托管的好處就是可以在容器啟動(dòng)或銷毀的時(shí)候做些準(zhǔn)備或清理動(dòng)作。分別可以用及來指定。默認(rèn)尋找的命名為或者的無參方法,這里沒有配置,默認(rèn)調(diào)用的是的方法。
序
本文主要簡(jiǎn)述下如何設(shè)置TaskExecutor的Thread.UncaughtExceptionHandler。
實(shí)例@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容器啟動(dòng)或銷毀的時(shí)候做些準(zhǔn)備或清理動(dòng)作。分別可以用initMethod及destroyMethod來指定。
destroyMethod默認(rèn)尋找public的命名為close或者shutdown的無參方法,這里沒有配置,默認(rèn)調(diào)用的是ThreadPoolTaskScheduler的shutdown方法。
spring默認(rèn)會(huì)給async的線程池配SimpleAsyncUncaughtExceptionHandler,具體見spring-context-4.3.9.RELEASE-sources.jar!/org/springframework/scheduling/annotation/AsyncAnnotationAdvisor.java
不過自己配置的taskExecutor就沒有這個(gè)福利了,需要自己配置,如下:
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());
這樣就大功告成了
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/67917.html
摘要:序本文主要聊聊中的注解。這里從獲取注解有個(gè)可以標(biāo)注使用哪個(gè),這里的就是尋找這個(gè)標(biāo)識(shí)。推薦注解指定,然后的返回,讓它去尋找默認(rèn)的自己應(yīng)用里頭都默認(rèn)定義一個(gè)給托管 序 本文主要聊聊spring中的async注解。 AsyncConfigurer @EnableAsync(proxyTargetClass = true) @Configuration public class AsyncCo...
摘要:注意這時(shí)中結(jié)果為,即將原來的替換成,所以直接返回線程池執(zhí)行的結(jié)果。提醒中的是你業(yè)務(wù)代碼執(zhí)行的步驟。所以異步異常處理和同步相同,在這段請(qǐng)求中處理。比多,調(diào)用時(shí)間即發(fā)起之前。正是請(qǐng)求被異步化,從而使得能,即。 用法 @GetMapping(/ddd) public Callable process() { return () -> { Thread.sleep(...
摘要:下面我們稍稍改下代碼來證實(shí)一下這次我讓任務(wù)執(zhí)行的時(shí)間等于,大于條線程總間隔時(shí)間來耗盡線程池中的線程。 1.開篇 在Spring定時(shí)任務(wù)@Scheduled注解使用方式淺窺這篇文章里面提及過,spring的定時(shí)任務(wù)默認(rèn)是單線程的,他在某些場(chǎng)景下會(huì)造成堵塞,那么如果我們想讓每一個(gè)任務(wù)都起一條線程去執(zhí)行呢? 2.使用@Async 我們可以使用Spring的@Async注解十分容易的實(shí)現(xiàn)多線程...
摘要:第三個(gè)就是比較重點(diǎn)的內(nèi)容,在有贊的實(shí)踐。第四部分是將實(shí)時(shí)計(jì)算化,界面化的一些實(shí)踐。二有贊實(shí)時(shí)平臺(tái)架構(gòu)有贊的實(shí)時(shí)平臺(tái)架構(gòu)呢有幾個(gè)主要的組成部分。實(shí)時(shí)平臺(tái)提供了集群管理,項(xiàng)目管理,任務(wù)管理和報(bào)警監(jiān)控的功能。。 一、前言 這篇主要由五個(gè)部分來組成: 首先是有贊的實(shí)時(shí)平臺(tái)架構(gòu)。 其次是在調(diào)研階段我們?yōu)槭裁催x擇了 Flink。在這個(gè)部分,主要是 Flink 與 Spark 的 structure...
摘要:第三個(gè)就是比較重點(diǎn)的內(nèi)容,在有贊的實(shí)踐。第四部分是將實(shí)時(shí)計(jì)算化,界面化的一些實(shí)踐。二有贊實(shí)時(shí)平臺(tái)架構(gòu)有贊的實(shí)時(shí)平臺(tái)架構(gòu)呢有幾個(gè)主要的組成部分。實(shí)時(shí)平臺(tái)提供了集群管理,項(xiàng)目管理,任務(wù)管理和報(bào)警監(jiān)控的功能。。 一、前言 這篇主要由五個(gè)部分來組成: 首先是有贊的實(shí)時(shí)平臺(tái)架構(gòu)。 其次是在調(diào)研階段我們?yōu)槭裁催x擇了 Flink。在這個(gè)部分,主要是 Flink 與 Spark 的 structure...
閱讀 2256·2021-11-25 09:43
閱讀 3124·2021-10-14 09:42
閱讀 3484·2021-10-12 10:12
閱讀 1526·2021-09-07 10:17
閱讀 1901·2019-08-30 15:54
閱讀 3181·2019-08-30 15:54
閱讀 1550·2019-08-30 15:53
閱讀 1908·2019-08-29 11:21