罗湖网站建设多少钱池州网站制作优化

张小明 2026/1/13 9:14:37
罗湖网站建设多少钱,池州网站制作优化,黑河商城网站建设,学院网站建设管理在 Java 中#xff0c;异步编程的核心目标是避免主线程阻塞#xff0c;提升程序并发性能。以下是 Java 不同版本 / 框架中最常用的异步方法#xff0c;按「基础 API→进阶框架」的逻辑梳理#xff0c;附核心用法和场景#xff1a;一、基础 JDK 异步 API#xff08;Java 5…在 Java 中异步编程的核心目标是避免主线程阻塞提升程序并发性能。以下是 Java 不同版本 / 框架中最常用的异步方法按「基础 API→进阶框架」的逻辑梳理附核心用法和场景一、基础 JDK 异步 APIJava 51. Thread/Runnable最基础核心逻辑通过新建线程执行异步任务无返回值。适用场景简单异步任务无需结果、无需线程管理。// 方式1直接new Thread new Thread(() - { // 异步执行的任务如IO操作、耗时计算 System.out.println(异步任务执行中 Thread.currentThread().getName()); }).start(); // 方式2线程池推荐避免频繁创建线程 ExecutorService executor Executors.newFixedThreadPool(5); executor.submit(() - { // 异步任务 }); // 注意使用后需关闭线程池优雅关闭 executor.shutdown();2. Future CallableJava 5支持返回值核心逻辑Callable定义有返回值的异步任务Future接收结果支持阻塞获取 / 超时获取。适用场景需要异步任务返回结果可接受阻塞等待的场景。ExecutorService executor Executors.newSingleThreadExecutor(); // 提交Callable任务返回Future FutureString future executor.submit(() - { Thread.sleep(1000); // 模拟耗时操作 return 异步任务结果; }); // 获取结果阻塞直到任务完成 try { String result future.get(); // 阻塞获取 // 或超时获取future.get(2, TimeUnit.SECONDS); System.out.println(结果 result); } catch (InterruptedException | ExecutionException | TimeoutException e) { e.printStackTrace(); } finally { executor.shutdown(); }缺点获取结果时仍会阻塞无法链式调用。3. CompletableFutureJava 8推荐核心逻辑基于「异步回调 流式编程」解决 Future 阻塞问题支持多任务组合、异常处理、非阻塞回调。适用场景复杂异步场景如多任务串行 / 并行、结果聚合、异步回调Java 8 首选。核心用法// 1. 异步执行无返回值任务 CompletableFuture.runAsync(() - { System.out.println(无返回值异步任务 Thread.currentThread().getName()); }); // 2. 异步执行有返回值任务默认使用ForkJoinPool.commonPool() CompletableFutureString future CompletableFuture.supplyAsync(() - { Thread.sleep(1000); return 有返回值的异步结果; }); // 3. 非阻塞回调任务完成后处理结果 future.thenAccept(result - System.out.println(回调处理结果 result)) .exceptionally(e - { // 异常处理 System.err.println(任务异常 e.getMessage()); return null; }); // 4. 多任务组合并行执行后聚合结果 CompletableFutureString task1 CompletableFuture.supplyAsync(() - 任务1); CompletableFutureString task2 CompletableFuture.supplyAsync(() - 任务2); // 等待所有任务完成聚合结果 CompletableFutureVoid allDone CompletableFuture.allOf(task1, task2); allDone.join(); // 阻塞等待所有任务完成也可改用thenRun异步处理 String result task1.join() task2.join(); System.out.println(聚合结果 result); // 5. 指定自定义线程池避免使用默认公共池 ExecutorService customPool Executors.newFixedThreadPool(3); CompletableFuture.supplyAsync(() - 自定义线程池执行, customPool) .thenRun(() - System.out.println(完成)) .whenComplete((v, e) - customPool.shutdown()); // 完成后关闭线程池二、Spring 框架中的异步方法Spring 3Spring 通过注解简化异步开发核心是Async。1. 基础使用Async步骤 1开启异步支持配置类 / 启动类Configuration EnableAsync // 开启异步 public class AsyncConfig { // 自定义线程池可选默认使用SimpleAsyncTaskExecutor Bean public Executor taskExecutor() { ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor(); executor.setCorePoolSize(5); executor.setMaxPoolSize(10); executor.setQueueCapacity(20); executor.setThreadNamePrefix(Async-); executor.initialize(); return executor; } }步骤 2定义异步方法Service public class AsyncService { // 无返回值异步方法 Async public void asyncTask() { System.out.println(Spring异步任务 Thread.currentThread().getName()); } // 有返回值异步方法返回Future/CompletableFuture Async public CompletableFutureString asyncTaskWithResult() { try { Thread.sleep(1000); return CompletableFuture.completedFuture(Spring异步结果); } catch (InterruptedException e) { return CompletableFuture.failedFuture(e); } } }步骤 3调用异步方法Autowired private AsyncService asyncService; public void testAsync() { // 调用无返回值异步方法 asyncService.asyncTask(); // 调用有返回值异步方法 CompletableFutureString future asyncService.asyncTaskWithResult(); future.thenAccept(result - System.out.println(Spring异步结果 result)); }2. 注意事项异步方法不能是private/static且不能在同一个类中调用Spring AOP 代理机制推荐自定义线程池避免默认线程池的性能问题异常处理可通过Async结合CompletableFuture捕获异常或自定义AsyncUncaughtExceptionHandler处理无返回值方法的异常。三、其他常用异步场景1. 异步 IOJava NIO 2 / AIO适用于高并发 IO 场景如网络通信、文件读写核心是AsynchronousFileChannel/AsynchronousSocketChannel// 异步文件读取示例 Path path Paths.get(test.txt); AsynchronousFileChannel channel AsynchronousFileChannel.open(path, StandardOpenOption.READ); ByteBuffer buffer ByteBuffer.allocate(1024); // 异步读取通过回调处理结果 channel.read(buffer, 0, null, new CompletionHandlerInteger, Void() { Override public void completed(Integer bytesRead, Void attachment) { System.out.println(读取字节数 bytesRead); buffer.flip(); // 处理读取的数据 } Override public void failed(Throwable exc, Void attachment) { exc.printStackTrace(); } });2. 响应式编程Project Reactor/Spring WebFlux适用于非阻塞响应式场景核心是Mono/Flux// 异步获取单个结果 MonoString mono Mono.fromSupplier(() - { Thread.sleep(1000); return Reactor异步结果; }).subscribeOn(Schedulers.boundedElastic()); // 指定异步线程池 // 订阅触发执行 mono.subscribe(result - System.out.println(Reactor结果 result));四、核心选型建议场景推荐方案Java 8 简单异步 / 多任务组合CompletableFutureSpring 项目中的业务异步Async 自定义线程池高并发 IO文件 / 网络Java AIO / Netty响应式非阻塞系统Spring WebFlux Reactor简单无返回值异步低并发Thread 线程池关键优化点所有异步场景都应使用线程池避免频繁创建线程避免异步任务中的阻塞操作如同步 IO、锁等待否则会耗尽线程池异步任务必须处理异常如 CompletableFuture 的 exceptionally、Spring 的异常处理器。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

在线免费做logo印章网站招聘网站建设的目的

智能视频转文字工具:轻松提取B站视频完整文本内容 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动整理视频内容而烦恼吗?想…

张小明 2026/1/13 7:08:48 网站建设

企业网站建设的经费预算将自己做的网站用电脑发到网上

01 背景介绍我是一名双非本科院校地理信息科学专业的毕业生,毕业以后,我并没有像有些同学那样直接找工作,而是选择了考研。这一考就是两年,但很遗憾,我的人生并不是爽文,两次考研均以失败告终。第一年考研的…

张小明 2026/1/10 3:53:57 网站建设

农产品网站管理员怎么做无锡网站建设方案

想要让普通耳机实现更专业的音频表现?Equalizer APO这款完全免费的Windows音频处理工具,能让你的电脑音质发生质的飞跃。无论你是音乐发烧友、游戏玩家还是影视爱好者,通过简单的配置就能实现专业级的音频优化效果。 【免费下载链接】equaliz…

张小明 2026/1/10 16:48:53 网站建设

很多卖假药冒产品用二级域名做网站个人急售二手房

🚀 想要快速掌握AI编程助手的使用技巧吗?Qwen3 30B A3B Python Coder作为一款专注于Python代码生成的强大模型,能够显著提升你的开发效率!本文将为你提供从基础安装到高级应用的完整解决方案。 【免费下载链接】Qwen3-Coder-30B-A…

张小明 2026/1/12 17:38:23 网站建设

渝北网站制作电影网站建设报价

完整指南:5步实现CAD图纸在线预览的终极解决方案 【免费下载链接】kkFileView Universal File Online Preview Project based on Spring-Boot 项目地址: https://gitcode.com/GitHub_Trending/kk/kkFileView 还在为专业CAD软件的复杂安装和高昂费用而苦恼&am…

张小明 2026/1/10 17:09:29 网站建设

深圳网站设计公司在什么地方企业怎样做好网站建设

Vivado 2018.3 安装实战全指南:为 Artix-7 开发铺平道路 你有没有遇到过这样的情况?刚拿到一块 Nexys4 DDR 或者 Arty A7 开发板,满心期待地打开电脑准备“烧第一把逻辑”,结果卡在第一步——Vivado 死活装不上、识别不到芯片、许…

张小明 2026/1/10 17:09:30 网站建设