java 中简单实现异步的几种方法
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