1. stream 异步
catalogList.parallelStream().forEach(catalogVO -> {
Map<String, List> map = getKeyListMap(catalogVO, adHocSearchVO, fieldElementsConfigMap, originCatalogFieldElementsMap);
result.put(catalogVO.getCatalog(), map);
});
2. 自制工具
工具类
public class AsyncEngine {
static class CustomForkJoinWorkerThread extends ForkJoinWorkerThread {
CustomForkJoinWorkerThread(ForkJoinPool pool) {
super(pool);
// fixme 解决ForkJoin在嵌入式Tomcat中默认SystemClassLoader加载类失败问题
setContextClassLoader(Thread.currentThread().getContextClassLoader());
}
}
private static final ForkJoinPool forkJoinPool = new ForkJoinPool(
Runtime.getRuntime().availableProcessors() + 2,
CustomForkJoinWorkerThread::new,
null,
false
);
public static void execute(Runnable task) {
forkJoinPool.execute(task);
}
}
使用方法
AsyncEngine.excute(()->{...})
其他的异步方式 :
https://blog.csdn.net/sco5282/article/details/131112037