当前位置: 首页 > wzjs >正文

通化网站优化北京it培训机构哪家好

通化网站优化,北京it培训机构哪家好,小说网站做封面要钱吗,WordPress主题开源版Guava并发编程深度解析 回调注册的核心概念 什么是回调注册? 回调注册是一种异步编程模式,它允许我们在启动一个异步任务后,预先定义任务完成时要执行的逻辑(回调函数),而不需要阻塞等待任务完成。 为什么需要回调注册? 在传统同步编程中: Future<String> …

Guava并发编程深度解析

回调注册的核心概念

什么是回调注册?

回调注册是一种异步编程模式,它允许我们在启动一个异步任务后,预先定义任务完成时要执行的逻辑(回调函数),而不需要阻塞等待任务完成。

为什么需要回调注册?

在传统同步编程中:

Future<String> future = executor.submit(task); // 提交任务
String result = future.get(); // 阻塞等待结果
processResult(result); // 处理结果

这种模式存在两个关键问题:

  1. 线程阻塞:主线程在 get() 处被阻塞
  2. 资源浪费:CPU 在等待期间无法执行其他任务

回调注册通过非阻塞通知机制解决这些问题:

ListenableFuture<String> future = executor.submit(task);
Futures.addCallback(future, new FutureCallback<String>() {public void onSuccess(String result) {// 任务完成后自动执行processResult(result);}
});
// 主线程继续执行其他任务

JVM 运行流程详解

以下通过一个完整的订单处理系统示例,展示回调注册在 JVM 中的执行流程:

import com.google.common.util.concurrent.*;
import java.util.concurrent.*;public class OrderSystem {// 1. 创建可监听线程池private static final ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(2));public static void main(String[] args) {System.out.println("【主线程】启动订单处理系统");// 2. 提交订单处理任务ListenableFuture<OrderResult> future = processOrder("ORDER-101");// 3. 注册回调函数Futures.addCallback(future, new FutureCallback<OrderResult>() {@Overridepublic void onSuccess(OrderResult result) {System.out.println("【回调线程】订单处理成功: " + result.orderId());System.out.println("【回调线程】库存更新: " + result.stock());}@Overridepublic void onFailure(Throwable t) {System.err.println("【回调线程】订单处理失败: " + t.getMessage());}}, executor);// 4. 主线程继续执行其他任务System.out.println("【主线程】继续处理其他业务");processOtherTasks();// 5. 关闭线程池executor.shutdown();}// 模拟订单处理private static ListenableFuture<OrderResult> processOrder(String orderId) {System.out.println("【任务线程】开始处理订单: " + orderId);return executor.submit(() -> {// 模拟耗时操作Thread.sleep(1000);System.out.println("【任务线程】订单处理完成: " + orderId);return new OrderResult(orderId, new Random().nextInt(100));});}// 模拟其他任务private static void processOtherTasks() {System.out.println("【主线程】执行其他业务逻辑");// 模拟其他工作try { Thread.sleep(500); } catch (InterruptedException e) {}}// 领域模型record OrderResult(String orderId, int stock) {}
}

JVM 运行流程分析

阶段1:初始化(主线程)

主线程 JVM 加载类 创建线程池 提交订单任务 注册回调函数 执行其他任务 主线程 JVM
  1. JVM 加载 OrderSystem
  2. 主线程创建监听线程池(2个工作线程)
  3. 调用 processOrder() 提交任务
  4. 注册回调函数(但尚未执行)
  5. 主线程继续执行 processOtherTasks()

阶段2:异步任务执行(工作线程)

http://www.dtcms.com/wzjs/60705.html

相关文章:

  • 三合一网站制作价格百度网盟推广
  • phpcms v9怎么做网站软文推广500字
  • 网站版权信息的正确写法武汉seo网站管理
  • 长沙做彩票网站公司广州网站排名专业乐云seo
  • 保山企业网站建设电脑优化大师
  • php彩票网站建设源码黑帽seo优化软件
  • 网站开发 如何备案国外b站不收费免费2023
  • 建设项目从哪个网站可以查最新热搜新闻
  • 小团队兼职做网站百度人工在线客服
  • 响应式网站的制作网站制作英文外链平台
  • 做网站联系方式2022真实新闻作文400字
  • 如何鉴定网站做的好坏邯郸网站优化
  • 做网站的接私活犯法吗搜索引擎竞价推广的优势
  • 商务网站网络环境设计新媒体销售好做吗
  • 在线做静态头像的网站seo公司推广宣传
  • 上海有几个区几个县游戏优化
  • 常熟专业做网站百度网盘官方
  • 网站建设的公司联系方式如何建立网站的步骤
  • 品牌网站建设有什么作用网店运营与推广
  • 网站上推广游戏怎么做的百度指数搜索榜度指数
  • 网站收录怎么设置举例一个成功的网络营销案例
  • 成都网站建设报价网络推广好做吗多少钱
  • 济南专业做网站公司哪家好嘉兴seo外包公司费用
  • 中英文网站建设费用怎么自己建网站
  • 绿色食品网站建设可行性北京网站推广公司
  • 做彩网站外链群发平台
  • wordpress 主题 博客百度关键词优化软件
  • 58同城怎么发布信息北京seo顾问
  • 网站的英文aso推广
  • 怎么做支付网站国外免费域名申请