首页>代码>jHipster3.4创建Java Web应用项目最简单的入门基本教程>/kenlen1/kenlen/src/main/java/com/emodak/kenlen/async/ExceptionHandlingAsyncTaskExecutor.java
package com.emodak.kenlen.async; import java.util.concurrent.Callable; import java.util.concurrent.Future; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.task.AsyncTaskExecutor; public class ExceptionHandlingAsyncTaskExecutor implements AsyncTaskExecutor, InitializingBean, DisposableBean { private final Logger log = LoggerFactory.getLogger(ExceptionHandlingAsyncTaskExecutor.class); private final AsyncTaskExecutor executor; public ExceptionHandlingAsyncTaskExecutor(AsyncTaskExecutor executor) { this.executor = executor; } @Override public void execute(Runnable task) { executor.execute(createWrappedRunnable(task)); } @Override public void execute(Runnable task, long startTimeout) { executor.execute(createWrappedRunnable(task), startTimeout); } private <T> Callable<T> createCallable(final Callable<T> task) { return () -> { try { return task.call(); } catch (Exception e) { handle(e); throw e; } }; } private Runnable createWrappedRunnable(final Runnable task) { return () -> { try { task.run(); } catch (Exception e) { handle(e); } }; } protected void handle(Exception e) { log.error("Caught async exception", e); } @Override public Future<?> submit(Runnable task) { return executor.submit(createWrappedRunnable(task)); } @Override public <T> Future<T> submit(Callable<T> task) { return executor.submit(createCallable(task)); } @Override public void destroy() throws Exception { if (executor instanceof DisposableBean) { DisposableBean bean = (DisposableBean) executor; bean.destroy(); } } @Override public void afterPropertiesSet() throws Exception { if (executor instanceof InitializingBean) { InitializingBean bean = (InitializingBean) executor; bean.afterPropertiesSet(); } } }
最近下载更多
linom199144 LV2
2021年7月5日
jupiterup LV3
2017年5月15日
FunnyKing LV19
2017年4月12日
china_0221 LV41
2017年3月19日
china_0221 LV41
2017年3月19日
ddman9009 LV25
2016年7月13日
wangshanhe LV2
2016年6月15日
最代码官方 LV168
2016年6月12日
最近浏览更多
15719908287 LV9
6月19日
不嘻嘻 LV8
2023年3月31日
why2015 LV21
2022年12月9日
敞开裤裆任雷劈 LV2
2022年1月28日
。
2021年12月3日
暂无贡献等级
Trickster LV9
2021年10月19日
linom199144 LV2
2021年7月5日
xiaobaixiaobai
2021年2月22日
暂无贡献等级
骑着鱼儿过海的猫 LV1
2020年11月25日
Coincidance LV8
2020年11月23日