39 lines
1.2 KiB
Java
39 lines
1.2 KiB
Java
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<Void> runAsync(Runnable task) {
|
|
return CompletableFuture.runAsync(task, doubleCarbonExecutor);
|
|
}
|
|
|
|
/**
|
|
* 执行异步任务并支持异常处理
|
|
*/
|
|
public static CompletableFuture<Void> runAsync(Runnable task, Consumer<Throwable> exceptionHandler) {
|
|
return CompletableFuture.runAsync(task, doubleCarbonExecutor)
|
|
.exceptionally(throwable -> {
|
|
exceptionHandler.accept(throwable);
|
|
return null;
|
|
});
|
|
}
|
|
|
|
@Autowired
|
|
public void setDoubleCarbonExecutor(@Qualifier("doubleCarbonExecutor") ThreadPoolTaskExecutor executor) {
|
|
AsyncTaskUtil.doubleCarbonExecutor = executor;
|
|
}
|
|
}
|