fla可以做网站么,中国万网网站建设过程,睢宁县建设局网站,投广告哪个平台好关注wx#xff1a; CodingTechWork
需求 一个列表操作需要异步处理每个元素#xff0c;最终需要将列表各个元素的操作结果统一返回#xff0c;无需关注该列表中的顺序执行。这个线程池不会保证任务的顺序执行#xff0c;即为WorkStealing抢占式的工作。
开发模板
线程池…关注wx CodingTechWork
需求 一个列表操作需要异步处理每个元素最终需要将列表各个元素的操作结果统一返回无需关注该列表中的顺序执行。这个线程池不会保证任务的顺序执行即为WorkStealing抢占式的工作。
开发模板
线程池配置
Configuration
public class ThreadPoolConfig {Beanpublic ExecutorService getThreadPool(){//工作抢占式线程池return Executors.newWorkStealingPool(20);}
}多线程调用
/*** 线程service*/Autowiredprivate ExecutorService executorService;/*** 异步处理列表*/private Boolean asynDo(ListString idList) {ListCompletableFutureBoolean futures new ArrayList();//CompletableFuture 循环处理idList.forEach(id - {CompletableFutureBoolean future CompletableFuture.supplyAsync(() -this.setId(id), executorService);//添加到异步汇总结果中futures.add(future);});//校验总的异步结果if (null ! futures !futures.isEmpty()) {//等待所有线程执行完毕futures.forEach(CompletableFuture::join);//处理转发结果for (CompletableFutureBoolean completableFuture : futures) {try {Boolean result completableFuture.get();if (null result) {log.error(asynDo失败错误信息结果为空);return false;}if (!result) {//一个失败则都失败return false;} else {//一个成功则继续log.info(id{}成功, id);}} catch (InterruptedException e) {log.error(asynDo失败错误信息{}, e.getMessage());Thread.currentThread().interrupt();return false;} catch (ExecutionException e) {log.error(asynDo失败错误信息{}, e.getMessage());return false;}}}return true;}/*** 单个处理*/private Boolean setId(String id) {//TODO ... ...}