package com.zhgd.xmgl.util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; @Component public class AsyncTaskUtil { private static ThreadPoolTaskExecutor doubleCarbonExecutor; /** * 执行异步任务 */ public static CompletableFuture runAsync(Runnable task) { return CompletableFuture.runAsync(task, doubleCarbonExecutor); } /** * 执行异步任务并支持异常处理 */ public static CompletableFuture runAsync(Runnable task, Consumer exceptionHandler) { return CompletableFuture.runAsync(task, doubleCarbonExecutor) .exceptionally(throwable -> { exceptionHandler.accept(throwable); return null; }); } @Autowired public void setDoubleCarbonExecutor(@Qualifier("doubleCarbonExecutor") ThreadPoolTaskExecutor executor) { AsyncTaskUtil.doubleCarbonExecutor = executor; } }