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

做淘宝类网站长沙专门做网站公司有哪些

做淘宝类网站,长沙专门做网站公司有哪些,html简单网页模板,东莞做企业营销型网站的公司1. CountDownLatch和CyclicBarrier:让多线程步调一致 1.1. 应用背景 应用背景:对账系统优化 系统逻辑: 用户下单 → 订单库;物流发货 → 派送单库;对账系统每日校验是否存在异常订单。 原始代码流程: …

1. CountDownLatch和CyclicBarrier:让多线程步调一致

1.1. 应用背景

应用背景:对账系统优化

  • 系统逻辑:
    1. 用户下单 → 订单库;
    2. 物流发货 → 派送单库;
    3. 对账系统每日校验是否存在异常订单。
  • 原始代码流程:
    • 单线程串行执行:查订单 → 查派送单 → 对账 → 写入差异库;
    • 性能瓶颈:getPOrders()getDOrders() 查询操作耗时。

1.2. 优化方案

1. 第一阶段优化:多线程并行查询

改进点:

  • getPOrders()getDOrders() 可并行,无依赖顺序。

实现方式 :手动创建线程 + join()

Thread T1 = new Thread(() -> { pos = getPOrders(); });
Thread T2 = new Thread(() -> { dos = getDOrders(); });
T1.start(); T2.start();
T1.join(); T2.join(); // 主线程等待
  • 优点:能有效利用 CPU,提高查询并发效率。
  • 缺点:每次循环都创建线程,开销大,不可复用。

2. 第二阶段优化:线程池 + CountDownLatch

问题:

  • 使用线程池复用线程后,不能再用 join() 等待线程结束。

解决方案:CountDownLatch

  • 功能:一个线程等待其他多个线程完成操作。
  • 用法:
CountDownLatch latch = new CountDownLatch(2);executor.execute(() -> { pos = getPOrders(); latch.countDown(); });
executor.execute(() -> { dos = getDOrders(); latch.countDown(); });latch.await(); // 等两个查询完成
diff = check(pos, dos); save(diff);
  • 优点:线程可复用,性能更优。
  • 特性:一次性使用,计数器不能重置。

3. 第三阶段优化:完全并行处理

目标:

  • 查询操作与对账操作并行:生产者-消费者模型

技术设计:

  • 两个线程 T1/T2 分别作为“生产者”,放入两个队列 pos / dos
  • 一个线程 T3 作为“消费者”,从两个队列中取出一对数据,进行对账。

步调一致 + 回调触发:使用 CyclicBarrier

问题:

  • 如何保证 T1 和 T2 查询步调一致?
  • 如何在它们都完成后触发对账操作(T3)?

解决方案:CyclicBarrier

  • 功能:一组线程互相等待,计数器归零自动重置,并可执行回调函数。
  • 用法示例:
final CyclicBarrier barrier = new CyclicBarrier(2, () -> {executor.execute(() -> check()); // 回调:执行对账
});Thread T1 = new Thread(() -> {while(存在未对账订单){pos.add(getPOrders());barrier.await(); // 等待 T2}
});
Thread T2 = new Thread(() -> {while(存在未对账订单){dos.add(getDOrders());barrier.await(); // 等待 T1}
});
  • 对账逻辑:
void check() {P p = pos.remove(0);D d = dos.remove(0);diff = check(p, d);save(diff);
}

CyclicBarrier 特点:

特性

描述

可重用

自动重置计数器,适合循环场景

回调机制

当所有线程到达屏障点时,自动触发操作

用途

多线程“并肩作战”场景,例如同步起跑

CountDownLatch vs. CyclicBarrier 对比总结:

特性

CountDownLatch

CyclicBarrier

作用场景

一个线程等待多个线程

多个线程互相等待

是否可重用

❌ 不可重用

✅ 可重用

回调机制

❌ 无回调

✅ 有回调

类比场景

旅游团团长等所有人到齐

驴友一起出发不离不弃

小结与实践建议

  • 如果是“一人等多人”:选 CountDownLatch
  • 如果是“多人互等”:选 CyclicBarrier
  • 线程池 + 并行执行 + 正确同步等待 → 提高系统吞吐;
  • 实际项目中尽量使用 JDK 提供的并发工具类,不建议自行实现同步逻辑。+

文章转载自:

http://KcCUtnSj.mwbqk.cn
http://04VddANd.mwbqk.cn
http://ytQFY164.mwbqk.cn
http://RBmYqHWK.mwbqk.cn
http://wGLm9pe8.mwbqk.cn
http://qiFdzBnq.mwbqk.cn
http://f08VvE3l.mwbqk.cn
http://gzqnzlJv.mwbqk.cn
http://tWXUdrfl.mwbqk.cn
http://GCS54Ev4.mwbqk.cn
http://aDfxFpTz.mwbqk.cn
http://8UwwVSco.mwbqk.cn
http://rFuh2syb.mwbqk.cn
http://CwReN9fI.mwbqk.cn
http://RSnjMnMQ.mwbqk.cn
http://O2ND7Rbs.mwbqk.cn
http://dfiywqhZ.mwbqk.cn
http://SBXKz6HA.mwbqk.cn
http://5WZMDtYh.mwbqk.cn
http://K7tdzN1g.mwbqk.cn
http://Qo7jNO4j.mwbqk.cn
http://IEZtbQer.mwbqk.cn
http://FFqplMs6.mwbqk.cn
http://1qsmg879.mwbqk.cn
http://8b5XeBq6.mwbqk.cn
http://zmoDzP1H.mwbqk.cn
http://WwA64qrz.mwbqk.cn
http://6ZfxuuQt.mwbqk.cn
http://7C4neXuJ.mwbqk.cn
http://G0Yr1s3m.mwbqk.cn
http://www.dtcms.com/wzjs/658705.html

相关文章:

  • 双语网站用什么程序做网站上怎么做艳丽的色
  • 南宁网站定制公司自适应好还是响应式网站好
  • c 网站开发简单实例教程python做网站挣钱
  • 河南省汝州市建设网站宁波网站开发制作
  • 0基础学网站开发怎么用腾讯云主机建设网站
  • 网站推广营销技巧室内效果图制作流程
  • 给宝宝做衣服网站好外语网站建设
  • 专业做国际网站的公司比较出名的外贸公司有哪些
  • 怎样给网站做竞价推广如何把一个关键词优化到首页
  • 网站访问量统计代码怎么做苏州网站制作公司
  • 有哪些公司的网站设计的好专业品牌设计网站建设
  • 网站首页设计素材建设部网站怎么查询企业业绩
  • 免费注册个网站企业建设网站目的
  • 百度推广和网站建设推广的区别长沙网页制作模板
  • 网站内链建设方法做网站用什么语言制作最安全
  • 郑州网站建设的公司学校户网站建设方案
  • 算卦网站哪里可以做网站截流做cpa
  • 公司展厅设计策划旺道seo推广系统怎么收费
  • 把网站生成app的免费平台积分支付 WordPress
  • 温州门户网站建设wordpress 网站投票
  • 网站虚拟主持人制作网站建设公司湖南
  • 描述一下网站建设的基本流程图网站免费正能量直接进入app
  • 安徽城乡建设局网站360搜索怎么做网站优化
  • 建设菠菜网站wordpress笑话主题模板
  • 美食电子商务网站建设规划书网站免费申请注册
  • 网站开发框架 Wordpresswordpress打不开了
  • 宾馆网站建设方案wordpress怎么玩
  • 外贸商城网站资质网站备案一般多久
  • dz多语言企业网站asp网站建设外文参考文献
  • 一个网站开发团队要什么人泉州优化公司