开发过程中使用FutureTask线程优化并获取执行结果 同轴电缆图片 • 2022-12-17 • 随笔 • 阅读 34 开发过程中使用FutureTask线程优化并获取执行结果 FutureTask 此线程有三种状态: 未启动已启动已完成(正常结束、取消而结束、异常结束) 当主线程调用FutureTask对象的get方法时: 未启动 - 主线程阻塞已启动 - 主线程阻塞已完成 - 立即返回结果或抛出异常 原始串行执行 List list = new ArrayList<>(); for (String entryId : entryIdList) { Object dataDetails = parserDataService.getDataByEntryId(dataType, entryId); list.add(dataDetails); } 需要等方法调用完后执行下一个 异步去执行方法 List list = new ArrayList<>(); List> futureTaskList = new ArrayList<>(entryIdList.size()); for (String entryId : entryIdList) { FutureTask futureTask = new FutureTask<>(() -> parserDataService.getDataByEntryId(dataType, entryId)); // 去拿线程池跑线程 poolExecutor.execute(futureTask); futureTaskList.add(futureTask); } // 取结果 futureTaskList.forEach( objectFutureTask -> { try { list.add(objectFutureTask.get()); } catch (InterruptedException e) { log.error("{}线程中断", Thread.currentThread().getName(), e); } catch (ExecutionException e) { log.error("{}线程执行异常", Thread.currentThread().getName(), e); } }); FutureTask详解 FutureTask详解 欢迎分享,转载请注明来源:内存溢出原文地址: http://outofmemory.cn/zaji/5682809.html 线程 执行 主线 启动 阻塞 赞 (0) 打赏 微信扫一扫 支付宝扫一扫 同轴电缆图片 一级用户组 0 0 生成海报 Log4j的使用 上一篇 2022-12-17 用exe4j将Java的可执行jar包转为exe后或过程中遇到的问题 下一篇 2022-12-17 发表评论 请登录后评论... 登录后才能评论 提交 评论列表(0条)
评论列表(0条)