石家庄外贸网站推广wordpress 经典主题

张小明 2026/1/16 9:17:46
石家庄外贸网站推广,wordpress 经典主题,本钢建设公司官网,wordpress导航菜单修改目录 前言1. 基本知识2. Demo3. 实战 前言 Java基本知识#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等#xff08;超全#xff09;【Java项目】实战CRUD的功能整理#xff08;持续更新#xff09; 1. 基本知识 CompletableFuture 是 Java 8 引…目录前言1. 基本知识2. Demo3. 实战前言Java基本知识java框架 零基础从入门到精通的学习路线 附开源项目面经等超全【Java项目】实战CRUD的功能整理持续更新1. 基本知识CompletableFuture 是 Java 8 引入的异步编程类属于 java.util.concurrent 包的一部分异步计算async computation事件驱动callback任务组合composition异常处理exception handling核心思想是非阻塞地执行任务并在任务完成后处理结果核心特性非阻塞与 Future.get() 阻塞不同CompletableFuture 可以通过回调非阻塞地处理结果链式调用可以通过方法链组合多个异步任务异常处理提供 exceptionally、handle 等方法处理异常线程池支持可以指定 Executor 来控制异步任务执行线程常用的方法总结如下方法类型功能描述注意事项runAsync(Runnable)创建异步执行无返回值任务默认使用 ForkJoinPool.commonPool()任务无返回值supplyAsync(SupplierU)创建异步执行有返回值任务默认使用 ForkJoinPool.commonPool()thenApply(Function? super T,? extends U)转换对结果进行处理并返回新值上一个任务异常时不执行thenAccept(Consumer? super T)消费对结果进行消费无返回值上一个任务异常时不执行thenRun(Runnable)消费上一个任务完成后执行无结果传递上一个任务异常时不执行thenCompose(Function? super T,? extends CompletionStageU)组合链式异步调用顺序依赖可以避免嵌套CompletableFuturethenCombine(CompletionStage? extends U, BiFunction? super T,? super U,? extends V)组合两个独立异步任务完成后合并结果两个任务都完成才执行thenAcceptBoth(CompletionStage? extends U, BiConsumer? super T,? super U)组合两个独立任务完成后消费结果无返回值runAfterBoth(CompletionStage? , Runnable)组合两个独立任务完成后执行无结果传递无返回值allOf(CompletableFuture?...)等待等待所有任务完成返回CompletableFutureVoid需自行获取每个结果anyOf(CompletableFuture?...)等待任意一个任务完成即可返回CompletableFutureObject需强转类型exceptionally(FunctionThrowable,? extends T)异常处理捕获异常并返回默认值上游异常时触发handle(BiFunction? super T, Throwable, ? extends U)异常处理对结果或异常处理无论异常与否都会执行whenComplete(BiConsumer? super T,? super Throwable)异常处理对结果或异常进行观察无返回值类似finally核心方法创建supplyAsync(), runAsync()链式处理thenApply(), thenAccept(), thenRun()组合thenCompose(), thenCombine(), allOf(), anyOf()异常处理exceptionally(), handle()2. Demo示例 1异步任务执行publicstaticvoiddemoRunAsync(){CompletableFuture.runAsync(()-{System.out.println(执行任务: Thread.currentThread().getName());}).join();}示例 2有返回值异步任务publicstaticvoiddemoSupplyAsync(){intresultCompletableFuture.supplyAsync(()-{return42;}).thenApply(x-x*2).join();System.out.println(结果: result);}示例 3组合两个任务publicstaticvoiddemoThenCombine(){CompletableFutureIntegerf1CompletableFuture.supplyAsync(()-10);CompletableFutureIntegerf2CompletableFuture.supplyAsync(()-20);intsumf1.thenCombine(f2,Integer::sum).join();System.out.println(组合结果: sum);}示例 4异常处理publicstaticvoiddemoExceptionally(){CompletableFutureIntegerfutureCompletableFuture.supplyAsync(()-{if(true)thrownewRuntimeException(出错了);return100;});intresultfuture.exceptionally(ex-{System.out.println(捕获异常: ex.getMessage());return-1;}).join();System.out.println(最终结果: result);}示例 5等待多个任务完成publicstaticvoiddemoAllOf(){CompletableFutureIntegerf1CompletableFuture.supplyAsync(()-10);CompletableFutureIntegerf2CompletableFuture.supplyAsync(()-20);CompletableFutureIntegerf3CompletableFuture.supplyAsync(()-30);CompletableFutureVoidallCompletableFuture.allOf(f1,f2,f3);all.join();// 等待所有任务完成intsumf1.join()f2.join()f3.join();System.out.println(总和: sum);}大的一个Demoimportjava.util.concurrent.*;publicclassCompletableFutureDemo{publicstaticvoidmain(String[]args)throwsException{ExecutorServiceexecutorExecutors.newFixedThreadPool(3);// 异步任务1CompletableFutureIntegerfuture1CompletableFuture.supplyAsync(()-{System.out.println(任务1执行线程: Thread.currentThread().getName());return10;},executor);// 异步任务2CompletableFutureIntegerfuture2CompletableFuture.supplyAsync(()-{System.out.println(任务2执行线程: Thread.currentThread().getName());return20;},executor);// 组合任务任务1和任务2完成后求和CompletableFutureIntegerresultFuturefuture1.thenCombine(future2,(a,b)-ab);// 处理结果和异常resultFuture.thenAccept(sum-System.out.println(结果: sum)).exceptionally(ex-{System.out.println(异常ex.getMessage());returnnull;});// 等待所有任务完成resultFuture.join();executor.shutdown();}}截图如下3. 实战之所以有这个知识点是因为我原先的异步写错了导致有这个总结的思路上述意思如下线程A 算法1算法2算法3实际应该如下线程A算法1线程B算法2线程C算法3实际如下:AI 算法A→FutureTaskResultAI 算法B→FutureTaskResultAI 算法C→FutureTaskResult↓ allOf 等待 ↓ 汇总结果给前端大致的Demo如下:publicclassAiRecognition{publicstaticStringTOKENxxx;// 线程池生产环境建议交给 Spring 管理privatestaticfinalExecutorServiceEXECUTORExecutors.newFixedThreadPool(3);/** * 三个 AI 算法并发识别 */publicstaticCompletableFutureAiCheckResultaiCheckAll(StringimgUrlF,StringimgUrlL,StringimgUrlI){CompletableFutureTaskResultcontainerFutureCompletableFuture.supplyAsync(()-safeContainerCheck(imgUrlF),EXECUTOR);CompletableFutureTaskResultdoorFutureCompletableFuture.supplyAsync(()-safeDoorCheck(imgUrlL),EXECUTOR);CompletableFutureTaskResultinnerFutureCompletableFuture.supplyAsync(()-safeInnerCheck(imgUrlI),EXECUTOR);returnCompletableFuture.allOf(containerFuture,doorFuture,innerFuture).thenApply(v-{ListTaskResultlistArrays.asList(containerFuture.join(),doorFuture.join(),innerFuture.join());AiCheckResultresultnewAiCheckResult();result.setDetails(list);result.setSuccess(list.stream().allMatch(TaskResult::isSuccess));returnresult;});}// 以下是单个算法的安全封装 privatestaticTaskResultsafeContainerCheck(StringimgUrl){try{StringdatauploadImageAndRecognize(imgUrl,http://xxxx);returnTaskResult.ok(containerNumber,data);}catch(Exceptione){returnTaskResult.fail(containerNumber,e.getMessage());}}privatestaticTaskResultsafeDoorCheck(StringimgUrl){try{StringdatauploadImageAndGetState(imgUrl,http://xxxx);returnTaskResult.ok(doorState,data);}catch(Exceptione){returnTaskResult.fail(doorState,e.getMessage());}}privatestaticTaskResultsafeInnerCheck(StringimgUrl){try{StringdatauploadImageAndGetState(imgUrl,http://xxxx);returnTaskResult.ok(innerState,data);}catch(Exceptione){returnTaskResult.fail(innerState,e.getMessage());}}}1️⃣ 定义单个算法的返回结果publicclassTaskResult{privateStringtaskName;privatebooleansuccess;privateStringdata;privateStringreason;publicstaticTaskResultok(StringtaskName,Stringdata){TaskResultrnewTaskResult();r.taskNametaskName;r.successtrue;r.datadata;returnr;}publicstaticTaskResultfail(StringtaskName,Stringreason){TaskResultrnewTaskResult();r.taskNametaskName;r.successfalse;r.reasonreason;returnr;}// getter / setter 省略}2️⃣ 汇总返回给前端的结果publicclassAiCheckResult{privatebooleansuccess;privateListTaskResultdetails;// getter / setter}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做搜狗pc网站优化wordpress侧边栏广告

如何用SlopeCraft打造震撼的Minecraft立体地图画:完整指南 【免费下载链接】SlopeCraft Map Pixel Art Generator for Minecraft 项目地址: https://gitcode.com/gh_mirrors/sl/SlopeCraft 你是否曾想在Minecraft中创作出层次分明的立体地图画,却…

张小明 2026/1/10 2:43:46 网站建设

重庆网站服务器洛阳建站洛阳市网站建设

pgvector Windows环境完整安装指南:快速搭建向量搜索系统 【免费下载链接】pgvector Open-source vector similarity search for Postgres 项目地址: https://gitcode.com/GitHub_Trending/pg/pgvector PostgreSQL pgvector扩展为数据库提供了强大的向量相似…

张小明 2026/1/7 10:57:58 网站建设

同一人可以做几个网站的负责人wordpress app下载模板

Excalidraw备忘录模式保存:内部状态随时还原 在团队协作越来越依赖远程沟通的今天,一张随手画出的草图往往比千言万语更有效。可问题也随之而来:当你正画到一半,浏览器崩溃了;或是临时切换设备,发现一切得…

张小明 2026/1/9 6:03:13 网站建设

东华网站开发做的王者荣耀钓鱼网站

解锁原神成就管理新姿势:YaeAchievement智能解决方案 【免费下载链接】YaeAchievement 更快、更准的原神成就导出工具 项目地址: https://gitcode.com/gh_mirrors/ya/YaeAchievement 你是否曾为原神成就数据无法统一管理而烦恼?当你的成就分散在不…

张小明 2026/1/6 21:15:26 网站建设

杨浦企业网站建设mvc 网站模板

LobeChat 优惠券发放策略建议 在 AI 对话系统逐渐成为数字产品标配的今天,用户获取与留存的竞争已经从“有没有智能对话”转向“谁的体验更流畅、服务更贴心”。LobeChat 作为一款设计现代、扩展性强的开源聊天框架,凭借其对多模型支持、插件化架构和可…

张小明 2026/1/6 23:07:04 网站建设

建设银行北海分行网站名师工作室网站建设

临近年底,相信各位质量负责人都在忙着做复盘、写规划。最近在与多位同行的交流中,我发现一个非常有意思但又令人无奈的共性现象:大家的工厂里,ERP、MES、PLM等核心系统早已是“标配”,信息化投入不菲。然而&#xff0c…

张小明 2026/1/6 21:16:47 网站建设